AutoIncBuild=0\r
MajorVer=0\r
MinorVer=2\r
-Release=1\r
-Build=6\r
-Debug=0\r
-PreRelease=1\r
+Release=2\r
+Build=11\r
+Debug=1\r
+PreRelease=0\r
Special=0\r
Private=0\r
DLL=0\r
[Version Info Keys]\r
CompanyName=GPSBabel Makers\r
FileDescription=GPSBabel Windows Frontend\r
-FileVersion=0.2.1.6\r
+FileVersion=0.2.2.11\r
InternalName=GPSBabelGUI-2\r
LegalCopyright=(C) 2005 Olaf Klein (O.B.Klein@T-Online.de)\r
LegalTrademarks=\r
OriginalFilename=GPSBabelGUI.exe\r
ProductName=GPSBabel\r
-ProductVersion=1.2.8-beta11012005\r
-Comments=\r
-[HistoryLists\hlConditionals]\r
-Count=1\r
-Item0=MSWINDOWS\r
-[HistoryLists\hlUnitAliases]\r
-Count=1\r
-Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;\r
+ProductVersion=1.2.8-beta11102005\r
+Comments=internal test build\r
\r
uses\r
gnugettext in 'gnugettext.pas',\r
- gnugettextD4 in 'gnugettextD4.pas',\r
Windows,\r
SysUtils,\r
classes,\r
common in 'common.pas',\r
filter in 'filter.pas' {frmFilter},\r
about in 'about.pas' {frmAbout},\r
- readme in 'readme.pas' {frmReadme};\r
+ readme in 'readme.pas' {frmReadme},\r
+ options in 'options.pas' {frmOptions};\r
\r
{$R *.RES}\r
\r
+var\r
+ lang: string;\r
+\r
begin\r
AddDomainForResourceString('delphi');\r
-\r
+ lang := ReadProfile('Global:Language', '');\r
+ if (lang <> '') then\r
+ UseLanguage(lang);\r
+{$IFOPT D+}\r
// UseLanguage('fr'); // for testing\r
-\r
+{$ENDIF}\r
Application.Initialize;\r
Application.CreateForm(TfrmMain, frmMain);\r
Application.CreateForm(TfrmReadme, frmReadme);\r
- Application.CreateForm(TfrmFilter, frmFilter);\r
- Application.CreateForm(TfrmAbout, frmAbout);\r
Application.Run;\r
end.\r
interface\r
\r
uses\r
- gnugettextD4,\r
+ gnugettextDx,\r
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
- StdCtrls, Buttons, ExtCtrls, ShellApi,\r
+ StdCtrls, Buttons, ExtCtrls, \r
common;\r
\r
type\r
lbCopyRight: TLabel;\r
lbMoreInfo: TLabel;\r
lbSFURL: TLabel;\r
+ btnNewLanguage: TButton;\r
procedure FormCreate(Sender: TObject);\r
procedure lbURLMouseMove(Sender: TObject; Shift: TShiftState; X,\r
Y: Integer);\r
procedure pnCenterMouseMove(Sender: TObject; Shift: TShiftState; X,\r
Y: Integer);\r
procedure lbURLClick(Sender: TObject);\r
+ procedure FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
+ procedure btnNewLanguageClick(Sender: TObject);\r
private\r
{ Private declarations }\r
FTitle: string;\r
\r
procedure TfrmAbout.FormCreate(Sender: TObject);\r
begin\r
- gnugettextD4.TranslateComponent(SELF);\r
+ TranslateComponent(SELF);\r
FTitle := Caption;\r
Caption := FTitle + ' ' + SGPSBabelTitle;\r
\r
\r
lbxTranslators.Items.Add(_('German by Olaf Klein'));\r
lbxTranslators.Items.Add(_('French by Lilian Morinon'));\r
+\r
end;\r
\r
procedure TfrmAbout.lbURLMouseMove(Sender: TObject; Shift: TShiftState; X,\r
end;\r
\r
procedure TfrmAbout.lbURLClick(Sender: TObject);\r
-var\r
- url: string;\r
begin\r
TLabel(Sender).Font.Color := clBlue;\r
- url := 'http://' + TLabel(Sender).Caption;\r
- ShellExecute(Self.Handle, 'open', PChar(url), nil, '', 0);\r
+ WinOpenFile('http://' + TLabel(Sender).Caption);\r
+end;\r
+\r
+procedure TfrmAbout.FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
+begin\r
+ if (Key = 27) then\r
+ ModalResult := mrOK;\r
+end;\r
+\r
+procedure TfrmAbout.btnNewLanguageClick(Sender: TObject);\r
+begin\r
+ ShowMessage(\r
+ _('Please have a look at the file README.GUI.'#13#10#10 +\r
+ 'There you will find all information you need to'#13#10 +\r
+ 'get GPSBabelGUI working in your own language.')\r
+ );\r
end;\r
\r
end.\r
+
\ No newline at end of file
interface\r
\r
uses\r
- Windows, SysUtils, Classes, Messages;\r
+ Windows, SysUtils, Classes, Messages, Controls, StdCtrls;\r
\r
+const\r
+ OTypes: array[0..6] of PChar =\r
+ ('unknown', 'integer', 'float', 'string', 'boolean', 'file', 'outfile');\r
+ \r
resourcestring\r
SGPSBabelURL = 'http://www.gpsbabel.org';\r
SGPSBabelTitle = 'GPSBabelGUI-2';\r
\r
var\r
+ gpsbabel_exe: string;\r
+ gpsbabel_version: string; // 1.101.010-beta...\r
+ gpsbabel_vfmt: string; // 001.101.010\r
+ gpsbabel_minor, gpsbabel_major, gpsbabel_release: Integer;\r
SGPSBabelGUIVersion: string;\r
CFixedFileinfo: TVSFixedFileInfo;\r
\r
const\r
WM_STARTUP = WM_USER + 1;\r
+ WM_OPTIONS_CHANGED = WM_USER + 2;\r
\r
const\r
SREG_TARGET_DIR = 'Target:Directory';\r
end;\r
\r
type\r
+ TOption = record\r
+ format: string;\r
+ name: string;\r
+ hint: string;\r
+ otype: Byte;\r
+ def: PChar;\r
+ min: PChar;\r
+ max: PChar;\r
+ chb: TCheckBox;\r
+ edit: TControl;\r
+ end;\r
+ POption = ^TOption;\r
+\r
+type\r
+ TCapabilities = class;\r
+ \r
+ TOptions = class(TStringList)\r
+ private\r
+ FCaps: TCapabilities;\r
+ procedure SetList(const Value: TStrings);\r
+ protected\r
+ public\r
+ constructor Create(ACapabilities: TCapabilities);\r
+ procedure AddOptionLine(const ALine: string);\r
+ procedure DebugGetHints(List: TStringList);\r
+ function FormatOpts(const Descr: string): TStringList;\r
+ function HasFormatOpts(const Format: string): Boolean;\r
+ property\r
+ List: TStrings write SetList;\r
+ end;\r
+\r
TCapabilities = class(TStringList)\r
private\r
FList: TStrings;\r
type\r
eGPSBabelError = class(Exception);\r
\r
-var\r
- gpsbabel_exe: string;\r
+function atoi(str: PChar): Integer;\r
\r
implementation\r
\r
+function atoi(str: PChar): Integer;\r
+begin\r
+ Result := 0;\r
+ while (str^ <> #0) do\r
+ begin\r
+ if ((str^ < '0') or (str^ > '9')) then Break;\r
+ Result := (Result * 10) + (Ord(str^) - Ord('0'));\r
+ str := str + 1;\r
+ end;\r
+end;\r
+\r
+function GetFileVersion(const Filename: string): string;\r
+var\r
+ buff: PChar;\r
+ hdl: DWORD;\r
+ len: DWORD;\r
+ sub: PChar;\r
+ sublen: UINT;\r
+ fix: PVSFixedFileInfo;\r
+ i: Integer;\r
+begin\r
+ Result := '?.?';\r
+\r
+ FillChar(CFixedFileinfo, SizeOf(CFixedFileinfo), #0);\r
+\r
+ len := GetFileVersionInfoSize(PChar(Filename), hdl);\r
+ if not(len > 0) then exit;\r
+\r
+ GetMem(buff, len);\r
+ try\r
+\r
+ if not GetFileVersionInfo(PChar(FileName), 0, len, buff) then Exit;\r
+\r
+ fix := Pointer(buff);\r
+ i := len - SizeOf(fix^);\r
+ while (i > 0) do\r
+ begin\r
+ Dec(i);\r
+ if (fix.dwSignature = $feef04bd) then\r
+ begin\r
+ CFixedFileinfo := fix^;\r
+ Break;\r
+ end;\r
+ PChar(fix) := PChar(fix) + 1; \r
+ end;\r
+\r
+ if not VerQueryValue(buff, PChar('\\StringFileInfo\\040904E4\\FileVersion'),\r
+ Pointer(sub), sublen) then Exit;\r
+ if not(sublen > 0) then Exit;\r
+ Result := string(sub);\r
+ finally\r
+ FreeMem(buff);\r
+ end;\r
+end;\r
+\r
+{ TOptions }\r
+\r
+constructor TOptions.Create(ACapabilities: TCapabilities);\r
+begin\r
+ inherited Create;\r
+ FCaps := ACapabilities;\r
+ Sorted := False;\r
+end;\r
+\r
+procedure TOptions.AddOptionLine(const ALine: string);\r
+var\r
+ buff: array[0..1023] of Char;\r
+ cin, cend: PChar;\r
+ index: Integer;\r
+ opt: POption;\r
+ list: TStringList;\r
+ i: Integer;\r
+begin\r
+ StrPCopy(buff, ALine);\r
+ StrCat(buff, #9);\r
+\r
+ cin := @buff;\r
+ index := 0;\r
+ while (true) do\r
+ begin\r
+ cend := StrScan(cin, #9);\r
+ if (cend = nil) then break;\r
+ cend^ := #0;\r
+\r
+ case index of\r
+ 0:\r
+ if (StrIComp(cin, 'option') <> 0) then\r
+ Exit else\r
+ begin\r
+ New(opt);\r
+ FillChar(opt^, SizeOf(opt^), #0);\r
+ end;\r
+ 1:\r
+ opt.format := string(cin);\r
+ 2:\r
+ opt.name := string(cin);\r
+ 3:\r
+ opt.hint := string(cin);\r
+ 4:\r
+ for i := 0 to high(OTypes) do\r
+ if (StrIComp(cin, OTypes[i]) = 0) then\r
+ begin\r
+ opt.otype := i;\r
+ Break;\r
+ end;\r
+ 5:\r
+ if (cin^ <> #0) then\r
+ opt.def := StrNew(cin);\r
+ 6:\r
+ if (cin^ <> #0) then\r
+ opt.min := StrNew(cin);\r
+ 7:\r
+ if (cin^ <> #0) then\r
+ opt.max := StrNew(cin);\r
+ end;\r
+ \r
+ index := index + 1;\r
+ cin := cend + 1;\r
+ end;\r
+\r
+ index := Self.IndexOf(opt.format);\r
+ if (index >= 0) then\r
+ list := TStringList(Self.Objects[index])\r
+ else begin\r
+ list := TStringList.Create;\r
+ list.Sorted := True;\r
+ Self.AddObject(opt.format, list);\r
+ end;\r
+ list.AddObject(opt.name, Pointer(opt));\r
+end;\r
+\r
+procedure TOptions.DebugGetHints(List: TStringList);\r
+var\r
+ i, j, k: Integer;\r
+ l: TStrings;\r
+ o: POption;\r
+begin\r
+ List.Clear;\r
+ List.Sorted := True;\r
+ for i := 0 to Count - 1 do\r
+ begin\r
+ l := Pointer(Objects[i]);\r
+ for j := 0 to l.Count - 1 do\r
+ begin\r
+ o := Pointer(l.Objects[j]);\r
+ k := List.IndexOf(o.hint);\r
+ if (k < 0) then\r
+ List.Add(o.hint);\r
+ end;\r
+ end;\r
+end;\r
+\r
+function TOptions.FormatOpts(const Descr: string): TStringList;\r
+var\r
+ i: Integer;\r
+ s: string;\r
+begin\r
+ s := FCaps.GetName(Descr);\r
+ if (s <> '') and Self.Find(s, i) then\r
+ Result := TStringList(Self.Objects[i])\r
+ else\r
+ Result := nil;\r
+end;\r
+\r
+function TOptions.HasFormatOpts(const Format: string): Boolean;\r
+begin\r
+ Result := (FormatOpts(Format) <> nil);\r
+end;\r
+\r
+procedure TOptions.SetList(const Value: TStrings);\r
+var\r
+ i: Integer;\r
+begin\r
+ Clear;\r
+ for i := 0 to Value.Count - 1 do\r
+ AddOptionLine(Value[i]);\r
+ Sorted := True;\r
+end;\r
+\r
{ TCapabilities }\r
\r
procedure TCapabilities.AddFormat(const Line: string);\r
comment: string;\r
name: string;\r
internal: string;\r
- \r
+\r
caps: Integer;\r
\r
info: PFileInfo;\r
cend^ := #0;\r
\r
case index of\r
- 0: internal := StrPas(cin);\r
- 1: scaps := StrPas(cin);\r
- 2: name := StrPas(cin);\r
- 3: ext := StrPas(cin);\r
+ 0:\r
+ if (StrIComp(cin, 'option') = 0) then\r
+ Exit\r
+ else\r
+ internal := StrPas(cin);\r
+ 1:\r
+ scaps := StrPas(cin);\r
+ 2:\r
+ name := StrPas(cin);\r
+ 3:\r
+ ext := StrPas(cin);\r
else\r
begin\r
comment := StrPas(cin);\r
end;\r
end;\r
\r
-function GetFileVersion(const Filename: string): string;\r
-var\r
- buff: PChar;\r
- hdl: DWORD;\r
- len: DWORD;\r
- sub: PChar;\r
- sublen: UINT;\r
- fix: PVSFixedFileInfo;\r
- i: Integer;\r
-begin\r
- Result := '?.?';\r
-\r
- FillChar(CFixedFileinfo, SizeOf(CFixedFileinfo), #0);\r
-\r
- len := GetFileVersionInfoSize(PChar(Filename), hdl);\r
- if not(len > 0) then exit;\r
-\r
- GetMem(buff, len);\r
- try\r
-\r
- if not GetFileVersionInfo(PChar(FileName), 0, len, buff) then Exit;\r
-\r
- fix := Pointer(buff);\r
- i := len - SizeOf(fix^);\r
- while (i > 0) do\r
- begin\r
- Dec(i);\r
- if (fix.dwSignature = $feef04bd) then\r
- begin\r
- CFixedFileinfo := fix^;\r
- Break;\r
- end;\r
- PChar(fix) := PChar(fix) + 1; \r
- end;\r
-\r
- if not VerQueryValue(buff, PChar('\\StringFileInfo\\040904E4\\FileVersion'),\r
- Pointer(sub), sublen) then Exit;\r
- if not(sublen > 0) then Exit;\r
- Result := string(sub);\r
- finally\r
- FreeMem(buff);\r
- end;\r
-end;\r
- \r
initialization\r
\r
gpsbabel_exe := SysUtils.ExtractFilePath(ParamStr(0)) + 'gpsbabel.exe';\r
interface\r
\r
uses\r
- gnugettextD4,\r
+ gnugettextDx,\r
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
- StdCtrls, ComCtrls, Buttons, Mask, ExtCtrls;\r
+ StdCtrls, ComCtrls, Buttons, Mask, ExtCtrls,\r
+ common;\r
\r
type\r
TfrmFilter = class(TForm)\r
procedure cbWayptRadiusClick(Sender: TObject);\r
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r
procedure FormShow(Sender: TObject);\r
+ procedure FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
private\r
{ Private-Deklarationen }\r
lTrackTimeList: TList;\r
FTracksEnabled: Boolean;\r
+ FInitialValues: string;\r
function AnyChecked(Control: TWinControl): Boolean;\r
procedure EnableList(List: TList; Enable: Boolean = True);\r
procedure SetTracksEnabled(const Value: Boolean);\r
AControl.Left := AControl.Left + 4;\r
end;\r
\r
-function TfrmFilter.ValidateNumerical(AEdit: TCustomEdit; AMin, AMax: Extended): Boolean;\r
-var\r
- s: string;\r
- v: Extended;\r
-begin\r
- Result := True;\r
- if not(AEdit.Enabled) then Exit;\r
- if (ModalResult <> mrOK) then Exit;\r
-\r
- Result := False;\r
- s := Trim(AEdit.Text);\r
- if (s = '') then s := '0';\r
- while (Pos(',', s) <> 0) do\r
- s[Pos(',', s)] := '.';\r
-\r
- AEdit.Text := s;\r
-\r
- try\r
- v := SysUtils.StrToFloat(s);\r
- except\r
- on E: EConvertError do\r
- begin\r
- AEdit.SetFocus;\r
- raise;\r
- end;\r
- end;\r
-\r
- if (v < AMin) or (v > AMax) then\r
- begin\r
- AEdit.SetFocus;\r
- raise eOutOfRange.CreateFmt(_('Value (%s) out of range (%g to %g)!'),\r
- [s, AMin, AMax]);\r
- end;\r
- Result := True;\r
-end;\r
-\r
-procedure TfrmFilter.cbTrackTimeClick(Sender: TObject);\r
-begin\r
- EnableList(lTrackTimeList, cbTrackTime.Checked);\r
-end;\r
-\r
-procedure TfrmFilter.EnableList(List: TList; Enable: Boolean);\r
+procedure EnableAll(Parent: TWinControl; Enable: Boolean);\r
var\r
i: Integer;\r
- o: TObject;\r
+ c: TComponent;\r
+ master: TComponent;\r
+ ctrl: TControl;\r
begin\r
- for i := 0 to List.Count - 1 do\r
+ if (Parent = nil) then Exit;\r
+ master := Parent.Owner;\r
+ if (master = nil) then Exit;\r
+ for i := 0 to master.ComponentCount - 1 do\r
begin\r
- o := Pointer(List.Items[i]);\r
- if (o is TControl) then\r
- with o as TControl do\r
- Enabled := Enable;\r
+ c := master.Components[i];\r
+ if not(c.InheritsFrom(TControl)) then Continue;\r
+ ctrl := Pointer(c);\r
+ if not(ctrl.Parent = Parent) then Continue;\r
+ ctrl.Enabled := Enable;\r
end;\r
end;\r
\r
+{ TfrmFilter }\r
+\r
procedure TfrmFilter.FormCreate(Sender: TObject);\r
var\r
CurrentTime: TDateTime;\r
\r
begin\r
- gnugettextD4.TranslateComponent(SELF);\r
+ TranslateComponent(SELF);\r
\r
CurrentTime := SysUtils.Now;\r
dtpTrackStartDate.DateTime := Int(CurrentTime);\r
cobWayptRadius.ItemIndex := 0;\r
\r
dtpTrackStopTime.Time := 1 - (1.0 / (24*60*60));\r
+\r
+ // Enable/Disable depending on gpsbabel.exe version\r
+\r
+ if (common.gpsbabel_vfmt < '001.002.007') then\r
+ begin\r
+ EnableAll(gbTracks, False);\r
+ gbTracks.Hint := Format(_('Not supported by gpsbabel.exe, release %s!'), [\r
+ gpsbabel_version]);\r
+ gbTracks.ShowHint := True;\r
+ end;\r
+end;\r
+\r
+function TfrmFilter.ValidateNumerical(AEdit: TCustomEdit; AMin, AMax: Extended): Boolean;\r
+var\r
+ s: string;\r
+ v: Extended;\r
+begin\r
+ Result := True;\r
+ if not(AEdit.Enabled) then Exit;\r
+ if (ModalResult <> mrOK) then Exit;\r
+\r
+ Result := False;\r
+ s := Trim(AEdit.Text);\r
+ if (s = '') then s := '0';\r
+ while (Pos(',', s) <> 0) do\r
+ s[Pos(',', s)] := '.';\r
+\r
+ AEdit.Text := s;\r
+\r
+ try\r
+ v := SysUtils.StrToFloat(s);\r
+ except\r
+ on E: EConvertError do\r
+ begin\r
+ AEdit.SetFocus;\r
+ raise;\r
+ end;\r
+ end;\r
+\r
+ if (v < AMin) or (v > AMax) then\r
+ begin\r
+ AEdit.SetFocus;\r
+ raise eOutOfRange.CreateFmt(_('Value (%s) out of range (%g to %g)!'),\r
+ [s, AMin, AMax]);\r
+ end;\r
+ Result := True;\r
+end;\r
+\r
+procedure TfrmFilter.cbTrackTimeClick(Sender: TObject);\r
+begin\r
+ EnableList(lTrackTimeList, cbTrackTime.Checked);\r
+end;\r
+\r
+procedure TfrmFilter.EnableList(List: TList; Enable: Boolean);\r
+var\r
+ i: Integer;\r
+ o: TObject;\r
+begin\r
+ for i := 0 to List.Count - 1 do\r
+ begin\r
+ o := Pointer(List.Items[i]);\r
+ if (o is TControl) then\r
+ with o as TControl do\r
+ Enabled := Enable;\r
+ end;\r
end;\r
\r
procedure TfrmFilter.cbTrackTitleClick(Sender: TObject);\r
procedure TfrmFilter.FormShow(Sender: TObject);\r
begin\r
ChangeCheckBoxesChecked(Self);\r
+ FInitialValues := CmdLine;\r
end;\r
\r
procedure TfrmFilter.ChangeCheckBoxesChecked(AComponent: TComponent; Restore: Boolean = False);\r
end;\r
end;\r
\r
+procedure TfrmFilter.FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
+var\r
+ str: string;\r
+begin\r
+ if (Key <> 27) then Exit;\r
+\r
+\r
+ str := Self.CmdLine;\r
+ if (str <> FInitialValues) then\r
+ begin\r
+ if not(MessageDlg(_('Discard changes?'), mtWarning, mbOKCancel, 0) = mrOK) then\r
+ Exit;\r
+ end;\r
+ ModalResult := mrCancel;\r
+end;\r
+\r
end.\r
msgstr ""
"Project-Id-Version: GPSBabel 1.2.7\n"
"POT-Creation-Date: 2005-08-12 14:50\n"
-"PO-Revision-Date: 2005-10-29 01:00+0100\n"
+"PO-Revision-Date: 2005-11-20 21:14+0100\n"
"Last-Translator: Olaf Klein <o.b.klein@t-online.de>\n"
"Language-Team: <O.B.Klein@T-Online.de>\n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: dxgettext 1.2\n"
"X-Poedit-Language: German\n"
-"X-Poedit-Country: GERMANY\n"
-#. frmAbout..Caption
#. frmAbout..Caption
#: about.dfm:5
-#: test/about.dfm:5
msgid "About"
msgstr "Über"
#. frmAbout..pnClient..pnCenter..lbHint1..Caption
-#. frmAbout..pnClient..pnCenter..lbHint1..Caption
-#: about.dfm:74
-#: test/about.dfm:74
+#: about.dfm:76
msgid "This program is part of the GPSBabel project, hosted on"
msgstr "Dieses Programm ist Bestandteil des Projektes \"GPSBabel\", zu finden auf"
#. frmAbout..pnClient..pnCenter..lbVersion..Caption
-#. frmAbout..pnClient..pnCenter..lbVersion..Caption
-#: about.dfm:82
-#: test/about.dfm:82
-msgid "Version 0.2"
-msgstr "Version 0.2"
+#: about.dfm:84
+#: about.pas:80
+msgid "Version"
+msgstr "Version"
#. frmAbout..pnClient..pnCenter..lbTranslators..Caption
-#. frmAbout..pnClient..pnCenter..lbTranslators..Caption
-#: about.dfm:89
-#: test/about.dfm:89
+#: about.dfm:91
msgid "Translations"
-msgstr "Übersetzung"
+msgstr "Übersetzungen"
#. frmAbout..pnClient..pnCenter..lbURL..Caption
-#. frmAbout..pnClient..pnCenter..lbURL..Caption
-#: about.dfm:96
-#: test/about.dfm:96
+#: about.dfm:98
msgid "www.gpsbabel.org"
msgstr "www.gpsbabel.org"
#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption
-#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption
-#: about.dfm:112
-#: test/about.dfm:112
+#: about.dfm:114
msgid "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)"
msgstr "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)"
#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption
-#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption
-#: about.dfm:119
-#: test/about.dfm:119
+#: about.dfm:121
msgid "Find more info at"
msgstr "Mehr Info's unter"
-#. frmAbout..pnClient..pnCenter..lbSFURL..Caption
-#. frmAbout..pnClient..pnCenter..lbSFURL..Caption
-#: about.dfm:126
-#: test/about.dfm:126
-msgid "SourceForge.net"
-msgstr "SourceForge.net"
-
-#. frmAbout..pnClient..pnCenter..stDescription..Caption
#. frmAbout..pnClient..pnCenter..stDescription..Caption
-#: about.dfm:147
-#: test/about.dfm:147
+#: about.dfm:149
msgid "The frontend for gpsbabel command line program"
msgstr "Das Windows-Fontend für \"gpsbabel.exe\""
#. frmAbout..pnClient..pnCenter..stLicense..Caption
-#. frmAbout..pnClient..pnCenter..stLicense..Caption
-#: about.dfm:161
-#: test/about.dfm:161
+#: about.dfm:163
msgid "THIS SOFTWARE MAY ONLY BE LICENSED FREE OF CHARGE"
msgstr "DIESE SOFTWARE KANN UND DARF NUR KOSTENLOS WEITERGEGEBEN WERDEN"
-#. frmFilter..Caption
+#. frmAbout..pnClient..pnCenter..btnNewLanguage..Caption
+#: about.dfm:192
+msgid "Adding a new language"
+msgstr "Eine neue Sprache hinzufügen"
+
#. frmFilter..Caption
#: filter.dfm:6
-#: test/filter.dfm:6
msgid "Filter"
msgstr "Filter"
#. frmFilter..gbTracks..Caption
-#. frmMain..Panel2..cbTracks..Caption
-#. frmFilter..gbTracks..Caption
-#. frmMain..Panel2..cbTracks..Caption
-#: filter.dfm:29
-#: main.dfm:448
-#: test/filter.dfm:29
-#: test/main.dfm:428
+#. frmMain..pnBottom..cbTracks..Caption
+#: filter.dfm:31
+#: main.dfm:587
msgid "&Tracks"
msgstr "&Tracks"
#. frmFilter..gbTracks..lbTimePlusMinus..Caption
-#. frmFilter..gbTracks..lbTimePlusMinus..Caption
-#: filter.dfm:37
-#: test/filter.dfm:37
+#: filter.dfm:39
msgid "by"
msgstr "um"
#. frmFilter..gbTracks..lbTimeDays..Caption
-#. frmFilter..gbTracks..lbTimeDays..Caption
-#: filter.dfm:44
-#: test/filter.dfm:44
+#: filter.dfm:46
msgid "day(s), "
msgstr "Tag(e),"
#. frmFilter..gbTracks..lbTimeHours..Caption
-#. frmFilter..gbTracks..lbTimeHours..Caption
-#: filter.dfm:51
-#: test/filter.dfm:51
+#: filter.dfm:53
msgid "hour(s), "
msgstr "Stunde(n),"
#. frmFilter..gbTracks..lbTimeMinutes..Caption
-#. frmFilter..gbTracks..lbTimeMinutes..Caption
-#: filter.dfm:58
-#: test/filter.dfm:58
+#: filter.dfm:60
msgid "minute(s),"
msgstr "Minute(n),"
#. frmFilter..gbTracks..lbTimeSeconds..Caption
-#. frmFilter..gbTracks..lbTimeSeconds..Caption
-#: filter.dfm:65
-#: test/filter.dfm:65
+#: filter.dfm:67
msgid "second(s)"
msgstr "Sekunde(n)"
#. frmFilter..gbTracks..cbTrackTitle..Hint
-#. frmFilter..gbTracks..cbTrackTitle..Hint
-#: filter.dfm:72
-#: test/filter.dfm:72
+#: filter.dfm:74
msgid "Title for new tracks"
msgstr "Titel für neu erstellte Tracks"
#. frmFilter..gbTracks..cbTrackTitle..Caption
-#. frmFilter..gbTracks..cbTrackTitle..Caption
-#: filter.dfm:74
-#: test/filter.dfm:74
+#: filter.dfm:76
msgid "Tit&le"
msgstr "Tite&l"
-#. frmFilter..gbTracks..edTrackTitle..Text
-#. frmFilter..gbTracks..edTrackTitle..Text
-#: filter.dfm:86
-#: test/filter.dfm:86
-msgid "ACTIVE LOG # %Y%m%d"
-msgstr "ACTIVE LOG # %Y%m%d"
-
#. frmFilter..gbTracks..cbTrackSplit..Hint
-#. frmFilter..gbTracks..cbTrackSplit..Hint
-#: filter.dfm:93
-#: test/filter.dfm:93
+#: filter.dfm:95
msgid "Split track into several tracks depending on date of trackpoint"
msgstr "Erzeuge mehrere Tracks abhängig vom Datum der Trackpunkte"
#. frmFilter..gbTracks..cbTrackSplit..Caption
-#. frmFilter..gbTracks..cbTrackSplit..Caption
-#: filter.dfm:94
-#: test/filter.dfm:94
+#: filter.dfm:96
msgid "&Split"
msgstr "&Splitten"
#. frmFilter..gbTracks..cbTrackTime..Hint
-#. frmFilter..gbTracks..cbTrackTime..Hint
-#: filter.dfm:102
-#: test/filter.dfm:102
+#: filter.dfm:104
msgid "Shift all tracks"
msgstr "Tracks um ein Zeitintervall verschieben "
#. frmFilter..gbTracks..cbTrackTime..Caption
-#. frmFilter..gbTracks..cbTrackTime..Caption
-#: filter.dfm:103
-#: test/filter.dfm:103
+#: filter.dfm:105
msgid "&Move"
msgstr "Verschieben"
#. frmFilter..gbTracks..cbTrackStart..Hint
-#. frmFilter..gbTracks..cbTrackStart..Hint
-#: filter.dfm:195
-#: test/filter.dfm:195
+#: filter.dfm:197
msgid "Take only trackpoints starting at"
msgstr "beginne bei Zeitpunkt ..."
#. frmFilter..gbTracks..cbTrackStart..Caption
-#. frmFilter..gbTracks..cbTrackStart..Caption
-#: filter.dfm:196
-#: test/filter.dfm:196
+#: filter.dfm:198
msgid "Start at"
msgstr "Beginnend am"
#. frmFilter..gbTracks..cbTrackStop..Caption
-#. frmFilter..gbTracks..cbTrackStop..Caption
-#: filter.dfm:235
-#: test/filter.dfm:235
+#: filter.dfm:237
msgid "stop at"
msgstr "bis zum"
#. frmFilter..gbTracks..cbTrackPack..Hint
-#. frmFilter..gbTracks..cbTrackPack..Hint
-#: filter.dfm:274
-#: test/filter.dfm:274
+#: filter.dfm:276
msgid "Pack all tracks into one track (No duplicate timestamps)"
msgstr "Alle Tracks zu einem einzigen zusammenfassen (doppelte Zeitstempel unzulässig)"
#. frmFilter..gbTracks..cbTrackPack..Caption
-#. frmFilter..gbTracks..cbTrackPack..Caption
-#: filter.dfm:275
-#: test/filter.dfm:275
+#: filter.dfm:277
msgid "&Pack (or)"
msgstr "&Packen (oder)"
#. frmFilter..gbTracks..cbTrackMerge..Hint
-#. frmFilter..gbTracks..cbTrackMerge..Hint
-#: filter.dfm:284
-#: test/filter.dfm:284
+#: filter.dfm:286
msgid "Merge all tracks into one track"
msgstr "Fasse alle Tracks zu einem einzigen zusammen (doppelte Zeitstempel werden verworfen)"
#. frmFilter..gbTracks..cbTrackMerge..Caption
-#. frmFilter..gbTracks..cbTrackMerge..Caption
-#: filter.dfm:285
-#: test/filter.dfm:285
+#: filter.dfm:287
msgid "Merge"
msgstr "Zusammenführen"
#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint
-#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint
-#: filter.dfm:294
-#: test/filter.dfm:294
+#: filter.dfm:296
msgid "Shift start/stop by local timezone offset"
msgstr "Verschiebe Beginn/Ende um Differenz zur lokalen Zeitzone"
#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption
-#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption
-#: filter.dfm:295
-#: test/filter.dfm:295
+#: filter.dfm:297
msgid "TZ"
msgstr "\"TZ\""
#. frmFilter..gbRoutes..Caption
-#. frmFilter..gbRoutes..Caption
-#: filter.dfm:306
-#: test/filter.dfm:306
+#: filter.dfm:308
msgid "&Routes && Tracks"
msgstr "&Routen && Tracks"
#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption
-#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption
-#: filter.dfm:314
-#: test/filter.dfm:314
+#: filter.dfm:316
msgid "limit to"
msgstr "auf maximal"
#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption
-#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption
-#: filter.dfm:322
-#: test/filter.dfm:322
+#: filter.dfm:324
msgid "Points"
msgstr "Punkte"
#. frmFilter..gbRoutes..cbRouteSimplify..Hint
-#. frmFilter..gbRoutes..cbRouteSimplify..Hint
-#: filter.dfm:329
-#: test/filter.dfm:329
+#: filter.dfm:331
msgid "Simplify routes and tracks by limited number of points"
msgstr "Limitiert die Anzahl von Wegpunkten in Routen und Tracks"
#. frmFilter..gbRoutes..cbRouteSimplify..Caption
-#. frmFilter..gbRoutes..cbRouteSimplify..Caption
-#: filter.dfm:330
-#: test/filter.dfm:330
+#: filter.dfm:332
msgid "Simplify"
msgstr "Vereinfachen"
#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint
-#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint
-#: filter.dfm:339
-#: test/filter.dfm:339
+#: filter.dfm:341
msgid "Upper limit of points for routes and tracks"
msgstr "Maximale Anzahl an Punkten innerhalb von Routen und Tracks"
#. frmFilter..gbRoutes..cbReverse..Hint
-#. frmFilter..gbRoutes..cbReverse..Hint
-#: filter.dfm:361
-#: test/filter.dfm:361
+#: filter.dfm:363
msgid "Reverse routes and tracks"
msgstr "Reihenfolge von Wegpunkten in Routen und Tracks umdrehen"
#. frmFilter..gbRoutes..cbReverse..Caption
-#. frmFilter..gbRoutes..cbReverse..Caption
-#: filter.dfm:362
-#: test/filter.dfm:362
+#: filter.dfm:364
msgid "Reverse"
msgstr "Umdrehen"
#. frmFilter..pnBottom..btnOK..Caption
-#. frmFilter..pnBottom..btnOK..Caption
-#: filter.dfm:379
-#: test/filter.dfm:379
+#: filter.dfm:381
msgid "OK"
msgstr "OK"
#. frmFilter..pnBottom..BitBtn1..Caption
-#. frmFilter..pnBottom..BitBtn1..Caption
-#: filter.dfm:415
-#: test/filter.dfm:415
+#: filter.dfm:417
msgid "File based filters"
msgstr "Datei basierende Filter"
#. frmFilter..gbWaypoints..Caption
-#. frmMain..Panel2..cbWaypoints..Caption
-#. frmFilter..gbWaypoints..Caption
-#. frmMain..Panel2..cbWaypoints..Caption
-#: filter.dfm:435
-#: main.dfm:426
-#: test/filter.dfm:435
-#: test/main.dfm:408
+#. frmMain..pnBottom..cbWaypoints..Caption
+#: filter.dfm:437
+#: main.dfm:561
msgid "&Waypoints"
msgstr "&Wegpunkte"
#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption
-#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption
-#: filter.dfm:444
-#: test/filter.dfm:444
+#: filter.dfm:446
msgid "Latitude"
msgstr "Breitengrad"
#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption
-#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption
-#: filter.dfm:452
-#: test/filter.dfm:452
+#: filter.dfm:454
msgid "Longitude"
msgstr "Längengrad"
#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint
-#: filter.dfm:460
-#: test/filter.dfm:460
+#: filter.dfm:462
msgid "Merge waypoints with duplicate locations"
msgstr "Fasse Wegpunkte mit gleichen Koordinaten zusammen"
#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption
-#: filter.dfm:461
-#: test/filter.dfm:461
+#: filter.dfm:463
msgid "locations"
msgstr "Koordinaten"
#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint
-#: filter.dfm:470
-#: test/filter.dfm:470
+#: filter.dfm:472
msgid "Merge waypoints with duplicate \"short name\""
msgstr "Fasse Wegpunkte mit gleichem Namen zusammen"
#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption
-#: filter.dfm:471
-#: test/filter.dfm:471
+#: filter.dfm:473
msgid "\"short names\""
msgstr "\"Kurznamen\""
#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint
-#: filter.dfm:480
-#: test/filter.dfm:480
+#: filter.dfm:482
msgid "Merge waypoints separated by less then"
msgstr "Fasse alle Wegpunkte zusammen, die weniger als ... auseinander liegen"
#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption
-#: filter.dfm:481
-#: test/filter.dfm:481
+#: filter.dfm:483
msgid "Position"
msgstr "Position"
#. frmFilter..gbWaypoints..cbWayptSort..Hint
-#. frmFilter..gbWaypoints..cbWayptSort..Hint
-#: filter.dfm:509
-#: test/filter.dfm:509
+#: filter.dfm:511
msgid "Sort waypoints by \"short name\" or by description"
msgstr "Sortiere Wegpunkte nach Name oder Beschreibung"
#. frmFilter..gbWaypoints..cbWayptSort..Caption
-#. frmFilter..gbWaypoints..cbWayptSort..Caption
-#: filter.dfm:510
-#: test/filter.dfm:510
+#: filter.dfm:512
msgid "Sort"
msgstr "Sortieren"
#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint
-#: filter.dfm:518
-#: test/filter.dfm:518
+#: filter.dfm:520
msgid "Merge duplicate waypoints"
msgstr "Entferne doppelte Wegpunkte"
#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption
-#: filter.dfm:519
-#: test/filter.dfm:519
-msgid "Duplicatates"
+#: filter.dfm:521
+msgid "Duplicates"
msgstr "Duplikate"
#. frmFilter..gbWaypoints..cbWayptRadius..Hint
-#. frmFilter..gbWaypoints..cbWayptRadius..Hint
-#: filter.dfm:528
-#: test/filter.dfm:528
+#: filter.dfm:530
msgid "Include points based on their proximity to central point"
msgstr "Übernehme nur Punkte mit Entfernung von maximal ... um Mittelpunkt ..."
#. frmFilter..gbWaypoints..cbWayptRadius..Caption
-#. frmFilter..gbWaypoints..cbWayptRadius..Caption
-#: filter.dfm:529
-#: test/filter.dfm:529
+#: filter.dfm:531
msgid "Radius"
msgstr "Radius"
#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint
-#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint
-#: filter.dfm:557
-#: test/filter.dfm:557
+#: filter.dfm:559
msgid "Latitude of central point"
msgstr "Breitengrad (Latitude) des Mittelpunktes"
#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint
-#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint
-#: filter.dfm:567
-#: test/filter.dfm:567
+#: filter.dfm:569
msgid "Longitude of central point"
msgstr "Längengrad (Longitude) des Mittelpunktes"
-#. frmMain..Panel1..sbOpenFile..Hint
-#: main.dfm:35
+#. frmMain..pnTop..gbInput..Caption
+#: main.dfm:38
+#: main.pas:285
+#: main.pas:431
+msgid "Input"
+msgstr "Eingabe"
+
+#. frmMain..pnTop..gbInput..sbOpenFile..Hint
+#: main.dfm:45
msgid "Start the file open dialog"
msgstr "Die zu lesende Datei auswählen"
-#. frmMain..Panel1..sbSaveFile..Hint
-#: main.dfm:58
-msgid "Start the file save dialog"
-msgstr "Die zu schreibende Datei auswählen"
-
-#. frmMain..Panel1..lbInputFile..Caption
-#. frmMain..Panel1..lbInputFile..Caption
-#: main.dfm:81
-#: test/main.dfm:78
-msgid "&Input file"
-msgstr "Eingabe-Datei"
-
-#. frmMain..Panel1..lbOutputFile..Caption
-#. frmMain..Panel1..lbOutputFile..Caption
-#: main.dfm:89
-#: test/main.dfm:86
-msgid "Out&put file"
-msgstr "Ausgabe-Datei"
-
-#. frmMain..Panel1..lbInputFormat..Caption
-#. frmMain..Panel1..lbInputFormat..Caption
-#: main.dfm:97
-#: test/main.dfm:94
-msgid "Input &format"
-msgstr "Eingabe-Format"
-
-#. frmMain..Panel1..lbOutputFormat..Caption
-#. frmMain..Panel1..lbOutputFormat..Caption
-#: main.dfm:104
-#: test/main.dfm:101
-msgid "Output f&ormat"
-msgstr "Ausgabe-Format"
-
-#. frmMain..Panel1..lbInputOpts..Caption
-#. frmMain..Panel1..lbOutputOpts..Caption
-#. frmMain..Panel1..lbInputOpts..Caption
-#. frmMain..Panel1..lbOutputOpts..Caption
-#: main.dfm:111
-#: main.dfm:119
-#: test/main.dfm:108
-#: test/main.dfm:116
+#. frmMain..pnTop..gbInput..lbInputOpts..Caption
+#. frmMain..pnTop..gbOutput..lbOutputOpts..Caption
+#. frmMain..ActionList1..acOptionsSourceFormat..Category
+#. frmMain..ActionList1..acOptionsTargetFormat..Category
+#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Category
+#: main.dfm:68
+#: main.dfm:232
+#: main.dfm:1426
+#: main.dfm:1431
+#: main.dfm:1445
msgid "Options"
msgstr "Optionen"
-#. frmMain..Panel1..cbInputFormat..Hint
-#: main.dfm:128
-msgid "Format for input from file"
-msgstr "zu benutzendes Eingabeformat"
+#. frmMain..pnTop..gbInput..lbInputFormat..Caption
+#. frmMain..pnTop..gbOutput..lbOutputFormat..Caption
+#: main.dfm:76
+#: main.dfm:262
+msgid "Format"
+msgstr "Format"
-#. frmMain..Panel1..cbOutputFormat..Hint
-#: main.dfm:141
-msgid "Format for output to file"
-msgstr "zu benutzendes Ausgabeformat"
-
-#. frmMain..Panel1..edOutputFile..Hint
-#: main.dfm:154
-msgid "Write data to given filename"
-msgstr "Dateiname für Datenausgabe"
-
-#. frmMain..Panel1..edInputFile..Hint
-#: main.dfm:166
-msgid "Read data from given filename"
-msgstr "Lese Daten von Datei ..."
+#. frmMain..pnTop..gbInput..lbInputFile..Caption
+#. frmMain..pnTop..gbOutput..lbOutputFile..Caption
+#. frmMain..ActionList1..acFileExit..Category
+#. frmMain..ActionList1..acFileClearMemo..Category
+#. frmMain..ActionList1..acFileOutputToScreen..Category
+#. frmMain..ActionList1..acFileChangeLanguage..Category
+#: main.dfm:83
+#: main.dfm:269
+#: main.dfm:1407
+#: main.dfm:1436
+#: main.dfm:1451
+#: main.dfm:1463
+#: main.pas:805
+#: main.pas:855
+msgid "File"
+msgstr "Datei"
-#. frmMain..Panel1..chbInputDevice..Hint
-#: main.dfm:176
+#. frmMain..pnTop..gbInput..chbInputDevice..Hint
+#: main.dfm:112
msgid "Read data from device instead from file"
msgstr "Dateneingabe von \"Gerät\""
-#. frmMain..Panel1..chbInputDevice..Caption
-#. frmMain..Panel1..chbOutputDevice..Caption
-#. frmMain..Panel1..chbInputDevice..Caption
-#. frmMain..Panel1..chbOutputDevice..Caption
-#: main.dfm:177
-#: main.dfm:231
-#: test/main.dfm:167
-#: test/main.dfm:217
+#. frmMain..pnTop..gbInput..chbInputDevice..Caption
+#. frmMain..pnTop..gbOutput..chbOutputDevice..Caption
+#: main.dfm:115
+#: main.dfm:302
msgid "Device"
msgstr "Gerät"
-#. frmMain..Panel1..cbInputDevice..Hint
-#: main.dfm:187
+#. frmMain..pnTop..gbInput..edInputOpts..Hint
+#: main.dfm:124
+msgid "Options for the selected input format"
+msgstr "Optionen für das gewählte Eingabe-Format"
+
+#. frmMain..pnTop..gbInput..edInputFile..Hint
+#: main.dfm:135
+msgid "Read data from given filename"
+msgstr "Lese Daten von Datei ..."
+
+#. frmMain..pnTop..gbInput..cbInputLang..Hint
+#: main.dfm:146
+msgid "Characterset for input data"
+msgstr "Zeichensatz für Eingangsdaten (nicht jedes Format unterstützt dies!)"
+
+#. frmMain..pnTop..gbInput..cbInputLang....Items.Strings
+#. frmMain..pnTop..gbOutput..cbOutputLang....Items.Strings
+#: main.dfm:152
+#: main.dfm:366
+msgid "- default -"
+msgstr "- Standard -"
+
+#. frmMain..pnTop..gbInput..cbInputDevice..Hint
+#: main.dfm:179
msgid "Read data from device ..."
msgstr "lese von Interface/Anschluß..."
-#. frmMain..Panel1..cbInputDevice....Items.Strings
-#. frmMain..Panel1..cbOutputDevice....Items.Strings
-#. frmMain..Panel1..cbInputDevice....Items.Strings
-#. frmMain..Panel1..cbOutputDevice....Items.Strings
-#: main.dfm:191
-#: main.dfm:245
-#: test/main.dfm:180
-#: test/main.dfm:230
-msgid "USB"
-msgstr "USB"
-
-#. frmMain..Panel1..cbInputFormatDevice..Hint
-#: main.dfm:205
+#. frmMain..pnTop..gbInput..cbInputFormatDevice..Hint
+#: main.dfm:197
msgid "Format for input from device"
msgstr "Eingabeformat des angeschlossenen Gerätes"
-#. frmMain..Panel1..cbOutputFormatDevice..Hint
-#: main.dfm:219
-msgid "Format for ouput to device"
-msgstr "Ausgabeformat für angeschlossenes Gerät"
+#. frmMain..pnTop..gbInput..cbInputFormat..Hint
+#: main.dfm:211
+msgid "Format for input from file"
+msgstr "zu benutzendes Eingabeformat"
+
+#. frmMain..pnTop..gbOutput..Caption
+#: main.dfm:225
+#: main.pas:286
+#: main.pas:440
+msgid "Output"
+msgstr "Ausgabe"
+
+#. frmMain..pnTop..gbOutput..sbSaveFile..Hint
+#: main.dfm:276
+msgid "Start the file save dialog"
+msgstr "Die zu schreibende Datei auswählen"
-#. frmMain..Panel1..chbOutputDevice..Hint
-#: main.dfm:230
+#. frmMain..pnTop..gbOutput..chbOutputDevice..Hint
+#: main.dfm:299
msgid "Write data to device instead to file"
msgstr "Datenausgabe auf \"Gerät\""
-#. frmMain..Panel1..cbOutputDevice..Hint
-#: main.dfm:241
-msgid "Write data to device ..."
-msgstr "schreibe nach Interface/Anschluß"
-
-#. frmMain..Panel1..edInputOpts..Hint
-#: main.dfm:258
-msgid "Options for the selected input format"
-msgstr "Optionen für das gewählte Eingabe-Format"
+#. frmMain..pnTop..gbOutput..cbOutputFormatDevice..Hint
+#: main.dfm:312
+msgid "Format for ouput to device"
+msgstr "Ausgabeformat für angeschlossenes Gerät"
-#. frmMain..Panel1..edOutputOpts..Hint
-#: main.dfm:267
+#. frmMain..pnTop..gbOutput..edOutputOpts..Hint
+#: main.dfm:324
msgid "Options for the selected output format"
msgstr "Optionen für das gewählte Ausgabeformat"
-#. frmMain..Panel2..lbWhat..Caption
-#. frmMain..Panel2..lbWhat..Caption
-#: main.dfm:286
-#: test/main.dfm:269
+#. frmMain..pnTop..gbOutput..cbOutputFormat..Hint
+#: main.dfm:335
+msgid "Format for output to file"
+msgstr "zu benutzendes Ausgabeformat"
+
+#. frmMain..pnTop..gbOutput..edOutputFile..Hint
+#: main.dfm:348
+msgid "Write data to given filename"
+msgstr "Dateiname für Datenausgabe"
+
+#. frmMain..pnTop..gbOutput..cbOutputLang..Hint
+#: main.dfm:360
+msgid "Characterset for output data"
+msgstr "Zeichensatz für Ausgangsdaten (nicht jedes Format unterstützt dies!)"
+
+#. frmMain..pnTop..gbOutput..cbOutputDevice..Hint
+#: main.dfm:393
+msgid "Write data to device ..."
+msgstr "schreibe nach Interface/Anschluß"
+
+#. frmMain..pnBottom..lbWhat..Caption
+#: main.dfm:421
msgid "What ?"
msgstr "Was?"
-#. frmMain..Panel2..cbWaypoints..Hint
-#: main.dfm:425
+#. frmMain..pnBottom..cbWaypoints..Hint
+#: main.dfm:560
msgid "Include waypoints"
msgstr "Wegpunkte in Konvertierung einschließen"
-#. frmMain..Panel2..cbRoutes..Hint
-#: main.dfm:437
+#. frmMain..pnBottom..cbRoutes..Hint
+#: main.dfm:574
msgid "Include routes"
msgstr "Routenpunkte in Konvertierung einschließen"
-#. frmMain..Panel2..cbRoutes..Caption
-#. frmMain..Panel2..cbRoutes..Caption
-#: main.dfm:438
-#: test/main.dfm:419
+#. frmMain..pnBottom..cbRoutes..Caption
+#: main.dfm:575
msgid "&Routes"
msgstr "&Routen"
-#. frmMain..Panel2..cbTracks..Hint
-#: main.dfm:447
+#. frmMain..pnBottom..cbTracks..Hint
+#: main.dfm:586
msgid "Include tracks"
msgstr "Trackpunkte in Konvertierung einschließen"
-#. frmMain..Panel2..btnFilter..Hint
-#: main.dfm:457
-msgid "Filter incomming data before writing them to file or device"
-msgstr "gelesene Daten filtern"
-
-#. frmMain..Panel2..btnFilter..Caption
-#. frmMain..ActionList1..acFilterSelect..Caption
-#. frmMain..Panel2..btnFilter..Caption
+#. frmMain..pnBottom..btnFilter..Caption
#. frmMain..ActionList1..acFilterSelect..Caption
-#: main.dfm:460
-#: main.dfm:990
-#: test/main.dfm:439
-#: test/main.dfm:968
+#: main.dfm:600
+#: main.dfm:1401
msgid "&Filter"
msgstr "&Filter"
-#. frmMain..Panel2..btnProcess..Hint
-#: main.dfm:504
+#. frmMain..pnBottom..btnProcess..Hint
+#: main.dfm:644
msgid "Start data conversion"
msgstr "Konvertierung starten"
-#. frmMain..Panel2..btnProcess..Caption
+#. frmMain..pnBottom..btnProcess..Caption
#. frmMain..ActionList1..acConvert..Caption
-#. frmMain..Panel2..btnProcess..Caption
-#. frmMain..ActionList1..acConvert..Caption
-#: main.dfm:507
-#: main.dfm:983
-#: test/main.dfm:485
-#: test/main.dfm:961
+#: main.dfm:647
+#: main.dfm:1394
msgid "let's go"
msgstr "und los"
-#. frmMain..stbMain........Text
-#. frmMain..stbMain........Text
-#: main.dfm:555
-#: test/main.dfm:533
-msgid "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)"
-msgstr "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)"
-
-#. frmMain..OpenDialog..Filter
#. frmMain..OpenDialog..Filter
-#: main.dfm:562
-#: test/main.dfm:540
+#: main.dfm:709
msgid "Garmin Mapsource mps|*.mps|All files|*.*"
msgstr "Garmin Mapsource mps|*.mps|Alle Dateien|*.*"
#. frmMain..SaveDialog..Filter
-#. frmMain..SaveDialog..Filter
-#: main.dfm:568
-#: test/main.dfm:546
+#: main.dfm:715
msgid "All file(s)|*.*|Garmin MapSource mps|*.mps"
msgstr "Alle Dateien|*.*|Garmin MapSource mps|*.mps"
#. frmMain..ActionList1..acConvert..Category
#. frmMain..ActionList1..acFilterSelect..Category
-#. frmMain..ActionList1..acConvert..Category
-#. frmMain..ActionList1..acFilterSelect..Category
-#: main.dfm:982
-#: main.dfm:989
-#: test/main.dfm:960
-#: test/main.dfm:967
+#: main.dfm:1393
+#: main.dfm:1400
msgid "Babel"
msgstr "Babel"
-#. frmMain..ActionList1..acFileExit..Category
-#. frmMain..ActionList1..acFileExit..Category
-#: main.dfm:995
-#: test/main.dfm:973
-msgid "File"
-msgstr "Datei"
+#. frmMain..ActionList1..acFilterSelect..Hint
+#: main.dfm:1402
+msgid "Filter incomming data before writing them to file or device"
+msgstr "gelesene Daten filtern"
#. frmMain..ActionList1..acFileExit..Caption
-#. frmMain..ActionList1..acFileExit..Caption
-#: main.dfm:996
-#: test/main.dfm:974
+#: main.dfm:1408
msgid "E&xit"
msgstr "Beenden"
#. frmMain..ActionList1..acHelpAbout..Category
#. frmMain..ActionList1..acHelpIntro..Category
#. frmMain..ActionList1..acHelpReadme..Category
-#. frmMain..ActionList1..acHelpAbout..Category
-#. frmMain..ActionList1..acHelpIntro..Category
-#. frmMain..ActionList1..acHelpReadme..Category
-#: main.dfm:1001
-#: main.dfm:1006
-#: main.dfm:1010
-#: test/main.dfm:979
-#: test/main.dfm:984
-#: test/main.dfm:988
+#: main.dfm:1412
+#: main.dfm:1417
+#: main.dfm:1421
msgid "Help"
msgstr "Hilfe"
#. frmMain..ActionList1..acHelpAbout..Caption
-#. frmMain..ActionList1..acHelpAbout..Caption
-#: main.dfm:1002
-#: test/main.dfm:980
+#: main.dfm:1413
msgid "&About"
msgstr "Über"
#. frmMain..ActionList1..acHelpIntro..Caption
-#. frmMain..ActionList1..acHelpIntro..Caption
-#: main.dfm:1007
-#: test/main.dfm:985
+#: main.dfm:1418
msgid "&Intro"
msgstr "Einführung"
#. frmMain..ActionList1..acHelpReadme..Caption
#. frmReadme..Caption
-#. frmMain..ActionList1..acHelpReadme..Caption
-#. frmReadme..Caption
-#: main.dfm:1011
+#: main.dfm:1422
#: readme.dfm:6
-#: test/main.dfm:989
-#: test/readme.dfm:6
msgid "GPSBabel README"
msgstr "GPSBabel README"
+#. frmMain..ActionList1..acOptionsSourceFormat..Caption
+#: main.dfm:1427
+msgid "... for source format"
+msgstr "... für Quellformat"
+
+#. frmMain..ActionList1..acOptionsTargetFormat..Caption
+#: main.dfm:1432
+msgid "... for target format"
+msgstr "... für Zielformat"
+
+#. frmMain..ActionList1..acFileClearMemo..Caption
+#: main.dfm:1437
+msgid "Clear output"
+msgstr "Meldungen löschen"
+
+#. frmMain..ActionList1..acFileClearMemo..Hint
+#: main.dfm:1438
+msgid "Clear messages"
+msgstr "Meldungen löschen"
+
+#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Caption
+#: main.dfm:1446
+msgid "Enable characterset transformation"
+msgstr "Zeichensatz transformieren"
+
+#. frmMain..ActionList1..acFileOutputToScreen..Caption
+#: main.dfm:1452
+msgid "Output to screen"
+msgstr "Ausgabe auf Bildschirm"
+
+#. frmMain..ActionList1..acFileChangeLanguage..Caption
+#: main.dfm:1464
+msgid "Change language"
+msgstr "Sprache ändern"
+
#. frmMain..MainMenu1..mnuFile..Caption
-#. frmMain..MainMenu1..mnuFile..Caption
-#: main.dfm:1020
-#: test/main.dfm:998
+#: main.dfm:1473
msgid "&File"
msgstr "&Datei"
#. frmMain..MainMenu1..mnuOptions..Caption
-#. frmMain..MainMenu1..mnuOptions..Caption
-#: main.dfm:1026
-#: test/main.dfm:1004
+#: main.dfm:1494
msgid "&Options"
msgstr "&Optionen"
#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption
-#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption
-#: main.dfm:1028
-#: test/main.dfm:1006
+#: main.dfm:1496
msgid "Synthesize short names"
msgstr "Synthetisiere Kurznamen"
#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint
-#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint
-#: main.dfm:1031
-#: test/main.dfm:1009
+#: main.dfm:1499
msgid "Ignore \"short\" names from source data and synthesize them from the long name"
msgstr "Ignoriere alle \"Kurznamen\" und generiere diese neu aus Bechreibung oder Bemerkung"
+#. frmMain..MainMenu1..mnuOptions..mnuOptionsForceDataType..Caption
+#: main.dfm:1503
+msgid "Force selected GPS data types (nuketypes filter)"
+msgstr ""
+
#. frmMain..MainMenu1..mnuHelp..Caption
-#. frmMain..MainMenu1..mnuHelp..Caption
-#: main.dfm:1040
-#: test/main.dfm:1018
+#: main.dfm:1538
msgid "&Help"
msgstr "&Hilfe"
-#: about.pas:76
-#: test/about.pas:76
-msgid "Version"
-msgstr "Version"
+#. frmOptions..Caption
+#: options.dfm:5
+msgid "Options for ..."
+msgstr "Optionen für ..."
-#: about.pas:83
-#: test/about.pas:83
+#: about.pas:87
msgid "German by Olaf Klein"
msgstr "Deutsch von Olaf Klein"
-#: about.pas:84
-#: test/about.pas:84
+#: about.pas:88
msgid "French by Lilian Morinon"
msgstr "Französisch von Lilian Morinon"
-#. Programmer's name for it: SGPSBabelURL
-#. Programmer's name for it: SGPSBabelURL
-#: common.pas:27
-#: test/common.pas:27
-msgid "http://www.gpsbabel.org"
-msgstr "http://www.gpsbabel.org"
-
-#: filter.pas:160
-#: test/filter.pas:160
-msgid "Value (%s) out of range (%g to %g)!"
-msgstr "Wert (%s) liegt außerhalb des zulässigen Bereiches (%g to %g)!"
+#: about.pas:131
+msgid ""
+"Please have a look at the file README.GUI.\n"
+"\n"
+"There you will find all information you need to\n"
+"get GPSBabelGUI working in your own language."
+msgstr ""
+"Werfen Sie einen kurzen Blick in die Datei \"README.GUI\"\n"
+"\n"
+"Dort finden Sie alle nötigen Informationen, um\n"
+"GPSBabelBUI eine neue Sprache beizubringen."
-#: filter.pas:228
-#: test/filter.pas:228
+#: filter.pas:199
msgid "Feet"
msgstr "\"Feet\" (engl.)"
-#: filter.pas:229
-#: test/filter.pas:229
+#: filter.pas:200
msgid "Meter"
msgstr "Meter"
-#: filter.pas:232
-#: test/filter.pas:232
+#: filter.pas:203
msgid "Miles"
msgstr "Meilen"
-#: filter.pas:233
-#: test/filter.pas:233
+#: filter.pas:204
msgid "Kilometer"
msgstr "Kilometer"
-#: main.pas:181
-#: test/main.pas:181
+#: filter.pas:214
+msgid "Not supported by gpsbabel.exe, release %s!"
+msgstr "Wird von gpsbabel.exe, Version %s, nicht unterstützt!"
+
+#: filter.pas:250
+msgid "Value (%s) out of range (%g to %g)!"
+msgstr "Wert (%s) liegt außerhalb des zulässigen Bereiches (%g to %g)!"
+
+#: filter.pas:530
+#: options.pas:575
+msgid "Discard changes?"
+msgstr "Änderungen verwerfen?"
+
+#: main.pas:238
+msgid "Internal development release"
+msgstr "Interne Entwicklungsausgabe"
+
+#: main.pas:240
msgid "BETA"
msgstr "BETA"
-#: main.pas:183
-#: test/main.pas:183
+#: main.pas:242
msgid "Private release"
msgstr "Private Version"
-#: main.pas:185
-#: test/main.pas:185
+#: main.pas:244
msgid "Special release"
msgstr "Spezial-Version"
-#: main.pas:283
-#: main.pas:378
-#: test/main.pas:281
-#: test/main.pas:376
+#: main.pas:313
+msgid "The file \"gpsbabel.exe\" found in current directory is too old!"
+msgstr "Die Datei \"gpsbabel.exe\" ist zu alt für diese GUI!"
+
+#: main.pas:382
+#: main.pas:510
msgid "All files|*.*"
msgstr "Alle Dateien|*.*"
-#: main.pas:420
-#: test/main.pas:417
+#: main.pas:448
+msgid "Select and edit options for \"%s\""
+msgstr "Optionen von \"%s\" bearbeiten"
+
+#: main.pas:452
+msgid "No options available for \"%s\""
+msgstr " \"%s\" hat keine Optionen!"
+
+#: main.pas:557
msgid "File %s not found."
msgstr "Datei \"%s\" nicht gefunden."
-#: main.pas:441
-#: test/main.pas:438
+#: main.pas:615
msgid "File \"%s\" exists ! Overwrite ?"
msgstr "Datei \"%s\" existiert bereits! Überschreiben?"
-#: main.pas:442
-#: test/main.pas:439
+#: main.pas:616
msgid "Warning"
msgstr "Warnung"
-#: main.pas:471
-#: test/main.pas:468
+#: main.pas:649
msgid "Could not run \"gpsbabel.exe\"!"
msgstr "Konnte \"gpsbabel.exe\" nicht ausführen!"
-#: main.pas:481
+#: main.pas:658
msgid "Sorry, gpsbabel.exe reported problems!"
msgstr "Uhps, da ging etwas schief!"
-#: main.pas:482
-msgid "Error"
-msgstr "Fehler"
-
-#: main.pas:485
-#: test/main.pas:477
+#: main.pas:660
msgid "Converted successfully from \"%s\" to \"%s\"."
msgstr "Erfolgreich konvertiert von \"%s\" zu \"%s\"."
-#: main.pas:486
-#: test/main.pas:478
-msgid "Success"
-msgstr "Erfolg"
+#: main.pas:761
+msgid "GPSBabel, version %s"
+msgstr "GPSBabel, Version %s"
+
+#: main.pas:795
+#: main.pas:846
+msgid "Port"
+msgstr "Schnittstelle"
+
+#: main.pas:937
+msgid "Options for \"%s\""
+msgstr "Optionen für \"%s\""
+
+#. override;
+#: options.pas:86
+msgid "Be aware, that most options are made for the output side. "
+msgstr "Achtung: die meisten Optionen sind vermutlich für die Datenausgabe gedacht."
-#: utils.pas:86
-#: test/utils.pas:76
+#: options.pas:87
+msgid "Currently we don't have a flag which tells us which direction is used the options."
+msgstr "Wir verfügen z.Z. über kein Merkmal über die Arbeitsweise der Optionen."
+
+#: options.pas:145
+msgid "Short \"%s\""
+msgstr "Abkürzung \"%s\""
+
+#: options.pas:246
+msgid "Invalid line format!"
+msgstr "Ungültiger Zeilenaufbau!"
+
+#: options.pas:267
+msgid "Unknown option \"%s\"!"
+msgstr "Unbekannte Option \"%s\"!"
+
+#: utils.pas:108
msgid "Error WINAPI: Could not create \"NamedPipe\"!"
msgstr "Fehler WINAPI: \"NamedPipe\" konnte nicht erstellt werden!"
-#: utils.pas:91
-#: test/utils.pas:81
+#: utils.pas:113
msgid "\"gpsbabel.exe\" not found!!!"
msgstr "\"gpsbabel.exe\" wurde nicht gefunden!!!"
#. dwCreationFlags, // creation flags
-#. dwCreationFlags, // creation flags
-#: utils.pas:110
-#: test/utils.pas:100
+#: utils.pas:132
msgid "Could not run \"gpsbabel.exe\" (Error %d)!"
msgstr "Konnte \"gpsbabel.exe\" nicht ausführen (Fehler %d)!"
-#: utils.pas:116
-#: test/utils.pas:106
+#: utils.pas:160
msgid "\"gpsbabel.exe\" returned error 0x%x (%d)"
msgstr "\"gpsbabel.exe\" verließ uns mit Fehler 0x%x (%d)!"
msgstr ""
"Project-Id-Version: French version\n"
"POT-Creation-Date: 2005-09-22 23:44\n"
-"PO-Revision-Date: 2005-11-01 19:32+0100\n"
-"Last-Translator: Lilian Morinon <lilian_morinon@yahoo.fr>\n"
+"PO-Revision-Date: 2005-11-20 21:14+0100\n"
+"Last-Translator: Olaf Klein <o.b.klein@t-online.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
"Plural-Forms: s\n"
-#. frmAbout..Caption
#. frmAbout..Caption
#: about.dfm:5
-#: test/about.dfm:5
msgid "About"
msgstr "A propos"
#. frmAbout..pnClient..pnCenter..lbHint1..Caption
-#. frmAbout..pnClient..pnCenter..lbHint1..Caption
-#: about.dfm:74
-#: test/about.dfm:74
+#: about.dfm:76
msgid "This program is part of the GPSBabel project, hosted on"
msgstr "Ce programme fait partie du projet GPSBabel, hébergé sur"
-# +++ IGNORE +++
-#. frmAbout..pnClient..pnCenter..lbVersion..Caption
#. frmAbout..pnClient..pnCenter..lbVersion..Caption
-#: about.dfm:82
-#: test/about.dfm:82
-msgid "Version 0.2"
+#: about.dfm:84
+#: about.pas:80
+msgid "Version"
msgstr ""
#. frmAbout..pnClient..pnCenter..lbTranslators..Caption
-#. frmAbout..pnClient..pnCenter..lbTranslators..Caption
-#: about.dfm:89
-#: test/about.dfm:89
+#: about.dfm:91
msgid "Translations"
msgstr "Traductions"
#. frmAbout..pnClient..pnCenter..lbURL..Caption
-#. frmAbout..pnClient..pnCenter..lbURL..Caption
-#: about.dfm:96
-#: test/about.dfm:96
+#: about.dfm:98
msgid "www.gpsbabel.org"
msgstr "www.gpsbabel.org"
#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption
-#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption
-#: about.dfm:112
-#: test/about.dfm:112
+#: about.dfm:114
msgid "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)"
msgstr ""
#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption
-#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption
-#: about.dfm:119
-#: test/about.dfm:119
+#: about.dfm:121
msgid "Find more info at"
msgstr "Plus d'infos sur"
-#. frmAbout..pnClient..pnCenter..lbSFURL..Caption
-#. frmAbout..pnClient..pnCenter..lbSFURL..Caption
-#: about.dfm:126
-#: test/about.dfm:126
-msgid "SourceForge.net"
-msgstr "SourceForge.net"
-
#. frmAbout..pnClient..pnCenter..stDescription..Caption
-#. frmAbout..pnClient..pnCenter..stDescription..Caption
-#: about.dfm:147
-#: test/about.dfm:147
+#: about.dfm:149
msgid "The frontend for gpsbabel command line program"
msgstr "L'interface graphique de gpsbabel"
#. frmAbout..pnClient..pnCenter..stLicense..Caption
-#. frmAbout..pnClient..pnCenter..stLicense..Caption
-#: about.dfm:161
-#: test/about.dfm:161
+#: about.dfm:163
msgid "THIS SOFTWARE MAY ONLY BE LICENSED FREE OF CHARGE"
msgstr "Ce prgramme ne peut être utilisé que sous license gratuite"
-#. frmFilter..Caption
+#. frmAbout..pnClient..pnCenter..btnNewLanguage..Caption
+#: about.dfm:192
+msgid "Adding a new language"
+msgstr ""
+
#. frmFilter..Caption
#: filter.dfm:6
-#: test/filter.dfm:6
msgid "Filter"
msgstr "Filtre"
#. frmFilter..gbTracks..Caption
-#. frmMain..Panel2..cbTracks..Caption
-#. frmFilter..gbTracks..Caption
-#. frmMain..Panel2..cbTracks..Caption
-#: filter.dfm:29
-#: main.dfm:448
-#: test/filter.dfm:29
-#: test/main.dfm:428
+#. frmMain..pnBottom..cbTracks..Caption
+#: filter.dfm:31
+#: main.dfm:587
msgid "&Tracks"
msgstr "&Traces"
#. frmFilter..gbTracks..lbTimePlusMinus..Caption
-#. frmFilter..gbTracks..lbTimePlusMinus..Caption
-#: filter.dfm:37
-#: test/filter.dfm:37
+#: filter.dfm:39
msgid "by"
msgstr "par"
#. frmFilter..gbTracks..lbTimeDays..Caption
-#. frmFilter..gbTracks..lbTimeDays..Caption
-#: filter.dfm:44
-#: test/filter.dfm:44
+#: filter.dfm:46
msgid "day(s), "
msgstr "jour(s),"
#. frmFilter..gbTracks..lbTimeHours..Caption
-#. frmFilter..gbTracks..lbTimeHours..Caption
-#: filter.dfm:51
-#: test/filter.dfm:51
+#: filter.dfm:53
msgid "hour(s), "
msgstr "heure(s)"
#. frmFilter..gbTracks..lbTimeMinutes..Caption
-#. frmFilter..gbTracks..lbTimeMinutes..Caption
-#: filter.dfm:58
-#: test/filter.dfm:58
+#: filter.dfm:60
msgid "minute(s),"
msgstr "minute(s)"
#. frmFilter..gbTracks..lbTimeSeconds..Caption
-#. frmFilter..gbTracks..lbTimeSeconds..Caption
-#: filter.dfm:65
-#: test/filter.dfm:65
+#: filter.dfm:67
msgid "second(s)"
msgstr "seconde(s)"
#. frmFilter..gbTracks..cbTrackTitle..Hint
-#. frmFilter..gbTracks..cbTrackTitle..Hint
-#: filter.dfm:72
-#: test/filter.dfm:72
+#: filter.dfm:74
msgid "Title for new tracks"
msgstr "Titres des nouvelles traces"
#. frmFilter..gbTracks..cbTrackTitle..Caption
-#. frmFilter..gbTracks..cbTrackTitle..Caption
-#: filter.dfm:74
-#: test/filter.dfm:74
+#: filter.dfm:76
msgid "Tit&le"
msgstr "Tit&re"
-#. frmFilter..gbTracks..edTrackTitle..Text
-#. frmFilter..gbTracks..edTrackTitle..Text
-#: filter.dfm:86
-#: test/filter.dfm:86
-msgid "ACTIVE LOG # %Y%m%d"
-msgstr "ACTIVE LOG # %Y%m%d"
-
#. frmFilter..gbTracks..cbTrackSplit..Hint
-#. frmFilter..gbTracks..cbTrackSplit..Hint
-#: filter.dfm:93
-#: test/filter.dfm:93
+#: filter.dfm:95
msgid "Split track into several tracks depending on date of trackpoint"
msgstr "Scinder la trace en plusieurs traces en fonction de la date des points"
#. frmFilter..gbTracks..cbTrackSplit..Caption
-#. frmFilter..gbTracks..cbTrackSplit..Caption
-#: filter.dfm:94
-#: test/filter.dfm:94
+#: filter.dfm:96
msgid "&Split"
msgstr "&Scinder"
#. frmFilter..gbTracks..cbTrackTime..Hint
-#. frmFilter..gbTracks..cbTrackTime..Hint
-#: filter.dfm:102
-#: test/filter.dfm:102
+#: filter.dfm:104
msgid "Shift all tracks"
msgstr "Inverser toutes les traces"
#. frmFilter..gbTracks..cbTrackTime..Caption
-#. frmFilter..gbTracks..cbTrackTime..Caption
-#: filter.dfm:103
-#: test/filter.dfm:103
+#: filter.dfm:105
msgid "&Move"
msgstr "&Déplacer"
#. frmFilter..gbTracks..cbTrackStart..Hint
-#. frmFilter..gbTracks..cbTrackStart..Hint
-#: filter.dfm:195
-#: test/filter.dfm:195
+#: filter.dfm:197
msgid "Take only trackpoints starting at"
msgstr "Utiliser seulement les points commençant à "
#. frmFilter..gbTracks..cbTrackStart..Caption
-#. frmFilter..gbTracks..cbTrackStart..Caption
-#: filter.dfm:196
-#: test/filter.dfm:196
+#: filter.dfm:198
msgid "Start at"
msgstr "Commencer à "
#. frmFilter..gbTracks..cbTrackStop..Caption
-#. frmFilter..gbTracks..cbTrackStop..Caption
-#: filter.dfm:235
-#: test/filter.dfm:235
+#: filter.dfm:237
msgid "stop at"
msgstr "Arrêter à "
#. frmFilter..gbTracks..cbTrackPack..Hint
-#. frmFilter..gbTracks..cbTrackPack..Hint
-#: filter.dfm:274
-#: test/filter.dfm:274
+#: filter.dfm:276
msgid "Pack all tracks into one track (No duplicate timestamps)"
msgstr "Fusionner toutes les traces en une seule (pas de duplication de l'horodatage)"
#. frmFilter..gbTracks..cbTrackPack..Caption
-#. frmFilter..gbTracks..cbTrackPack..Caption
-#: filter.dfm:275
-#: test/filter.dfm:275
+#: filter.dfm:277
msgid "&Pack (or)"
msgstr "&Fusionner (ou)"
#. frmFilter..gbTracks..cbTrackMerge..Hint
-#. frmFilter..gbTracks..cbTrackMerge..Hint
-#: filter.dfm:284
-#: test/filter.dfm:284
+#: filter.dfm:286
msgid "Merge all tracks into one track"
msgstr "Fusionner toutes les traces en une seule"
#. frmFilter..gbTracks..cbTrackMerge..Caption
-#. frmFilter..gbTracks..cbTrackMerge..Caption
-#: filter.dfm:285
-#: test/filter.dfm:285
+#: filter.dfm:287
msgid "Merge"
msgstr "Fusionner"
#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint
-#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint
-#: filter.dfm:294
-#: test/filter.dfm:294
+#: filter.dfm:296
msgid "Shift start/stop by local timezone offset"
msgstr "Décaler le début/fin en fonction du décalage horaire local"
#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption
-#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption
-#: filter.dfm:295
-#: test/filter.dfm:295
+#: filter.dfm:297
msgid "TZ"
msgstr ""
#. frmFilter..gbRoutes..Caption
-#. frmFilter..gbRoutes..Caption
-#: filter.dfm:306
-#: test/filter.dfm:306
+#: filter.dfm:308
msgid "&Routes && Tracks"
msgstr "&Routes && Traces"
#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption
-#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption
-#: filter.dfm:314
-#: test/filter.dfm:314
+#: filter.dfm:316
msgid "limit to"
msgstr "limiter à "
#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption
-#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption
-#: filter.dfm:322
-#: test/filter.dfm:322
+#: filter.dfm:324
msgid "Points"
msgstr ""
#. frmFilter..gbRoutes..cbRouteSimplify..Hint
-#. frmFilter..gbRoutes..cbRouteSimplify..Hint
-#: filter.dfm:329
-#: test/filter.dfm:329
+#: filter.dfm:331
msgid "Simplify routes and tracks by limited number of points"
msgstr "Simplifier les routes et traces en limitant le nombre de points"
#. frmFilter..gbRoutes..cbRouteSimplify..Caption
-#. frmFilter..gbRoutes..cbRouteSimplify..Caption
-#: filter.dfm:330
-#: test/filter.dfm:330
+#: filter.dfm:332
msgid "Simplify"
msgstr "Simplifier"
#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint
-#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint
-#: filter.dfm:339
-#: test/filter.dfm:339
+#: filter.dfm:341
msgid "Upper limit of points for routes and tracks"
msgstr "Limite maximum du nombre de points pour les routes et traces"
#. frmFilter..gbRoutes..cbReverse..Hint
-#. frmFilter..gbRoutes..cbReverse..Hint
-#: filter.dfm:361
-#: test/filter.dfm:361
+#: filter.dfm:363
msgid "Reverse routes and tracks"
msgstr "Inverser les routes et les traces"
#. frmFilter..gbRoutes..cbReverse..Caption
-#. frmFilter..gbRoutes..cbReverse..Caption
-#: filter.dfm:362
-#: test/filter.dfm:362
+#: filter.dfm:364
msgid "Reverse"
msgstr "Inverser"
#. frmFilter..pnBottom..btnOK..Caption
-#. frmFilter..pnBottom..btnOK..Caption
-#: filter.dfm:379
-#: test/filter.dfm:379
+#: filter.dfm:381
msgid "OK"
msgstr "OK"
#. frmFilter..pnBottom..BitBtn1..Caption
-#. frmFilter..pnBottom..BitBtn1..Caption
-#: filter.dfm:415
-#: test/filter.dfm:415
+#: filter.dfm:417
msgid "File based filters"
msgstr "Filtres de fichiers"
#. frmFilter..gbWaypoints..Caption
-#. frmMain..Panel2..cbWaypoints..Caption
-#. frmFilter..gbWaypoints..Caption
-#. frmMain..Panel2..cbWaypoints..Caption
-#: filter.dfm:435
-#: main.dfm:426
-#: test/filter.dfm:435
-#: test/main.dfm:408
+#. frmMain..pnBottom..cbWaypoints..Caption
+#: filter.dfm:437
+#: main.dfm:561
msgid "&Waypoints"
msgstr ""
#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption
-#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption
-#: filter.dfm:444
-#: test/filter.dfm:444
+#: filter.dfm:446
msgid "Latitude"
msgstr ""
#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption
-#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption
-#: filter.dfm:452
-#: test/filter.dfm:452
+#: filter.dfm:454
msgid "Longitude"
msgstr ""
#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint
-#: filter.dfm:460
-#: test/filter.dfm:460
+#: filter.dfm:462
msgid "Merge waypoints with duplicate locations"
msgstr "Fusionner les waypoints avec les positions en doublon"
#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption
-#: filter.dfm:461
-#: test/filter.dfm:461
+#: filter.dfm:463
msgid "locations"
msgstr "positions"
#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint
-#: filter.dfm:470
-#: test/filter.dfm:470
+#: filter.dfm:472
msgid "Merge waypoints with duplicate \"short name\""
msgstr "Fusionner les waypoints avec les doublons \"short name\""
#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption
-#: filter.dfm:471
-#: test/filter.dfm:471
+#: filter.dfm:473
msgid "\"short names\""
msgstr "\"noms courts\""
#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint
-#: filter.dfm:480
-#: test/filter.dfm:480
+#: filter.dfm:482
msgid "Merge waypoints separated by less then"
msgstr "Fusionner les waypoints séparé par moins de"
#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption
-#: filter.dfm:481
-#: test/filter.dfm:481
+#: filter.dfm:483
msgid "Position"
msgstr ""
#. frmFilter..gbWaypoints..cbWayptSort..Hint
-#. frmFilter..gbWaypoints..cbWayptSort..Hint
-#: filter.dfm:509
-#: test/filter.dfm:509
+#: filter.dfm:511
msgid "Sort waypoints by \"short name\" or by description"
msgstr "Trier les waypoints par \"short name\" ou par description"
#. frmFilter..gbWaypoints..cbWayptSort..Caption
-#. frmFilter..gbWaypoints..cbWayptSort..Caption
-#: filter.dfm:510
-#: test/filter.dfm:510
+#: filter.dfm:512
msgid "Sort"
msgstr "Trier"
#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint
-#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint
-#: filter.dfm:518
-#: test/filter.dfm:518
+#: filter.dfm:520
msgid "Merge duplicate waypoints"
msgstr "Fusionner les waypoints identiques"
#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption
-#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption
-#: filter.dfm:519
-#: test/filter.dfm:519
-msgid "Duplicatates"
+#: filter.dfm:521
+msgid "Duplicates"
msgstr "Doublons"
#. frmFilter..gbWaypoints..cbWayptRadius..Hint
-#. frmFilter..gbWaypoints..cbWayptRadius..Hint
-#: filter.dfm:528
-#: test/filter.dfm:528
+#: filter.dfm:530
msgid "Include points based on their proximity to central point"
msgstr "Inclure les points en fonction de la proximité d'un point central"
#. frmFilter..gbWaypoints..cbWayptRadius..Caption
-#. frmFilter..gbWaypoints..cbWayptRadius..Caption
-#: filter.dfm:529
-#: test/filter.dfm:529
+#: filter.dfm:531
msgid "Radius"
msgstr "Rayon"
#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint
-#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint
-#: filter.dfm:557
-#: test/filter.dfm:557
+#: filter.dfm:559
msgid "Latitude of central point"
msgstr "Latitude du point central"
#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint
-#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint
-#: filter.dfm:567
-#: test/filter.dfm:567
+#: filter.dfm:569
msgid "Longitude of central point"
msgstr "Longitude du point central"
-#. frmMain..Panel1..sbOpenFile..Hint
-#: main.dfm:35
+#. frmMain..pnTop..gbInput..Caption
+#: main.dfm:38
+#: main.pas:285
+#: main.pas:431
+msgid "Input"
+msgstr "Entrée"
+
+#. frmMain..pnTop..gbInput..sbOpenFile..Hint
+#: main.dfm:45
msgid "Start the file open dialog"
msgstr "Menu de d'ouverture de fichier"
-#. frmMain..Panel1..sbSaveFile..Hint
-#: main.dfm:58
-msgid "Start the file save dialog"
-msgstr "Menu de sauvegarde de fichier"
-
-#. frmMain..Panel1..lbInputFile..Caption
-#. frmMain..Panel1..lbInputFile..Caption
-#: main.dfm:81
-#: test/main.dfm:78
-msgid "&Input file"
-msgstr "Fichier &source"
-
-#. frmMain..Panel1..lbOutputFile..Caption
-#. frmMain..Panel1..lbOutputFile..Caption
-#: main.dfm:89
-#: test/main.dfm:86
-msgid "Out&put file"
-msgstr "Fichier &cible"
-
-#. frmMain..Panel1..lbInputFormat..Caption
-#. frmMain..Panel1..lbInputFormat..Caption
-#: main.dfm:97
-#: test/main.dfm:94
-msgid "Input &format"
-msgstr "Format sou&rce"
-
-#. frmMain..Panel1..lbOutputFormat..Caption
-#. frmMain..Panel1..lbOutputFormat..Caption
-#: main.dfm:104
-#: test/main.dfm:101
-msgid "Output f&ormat"
-msgstr "Format ci&ble"
-
-#. frmMain..Panel1..lbInputOpts..Caption
-#. frmMain..Panel1..lbOutputOpts..Caption
-#. frmMain..Panel1..lbInputOpts..Caption
-#. frmMain..Panel1..lbOutputOpts..Caption
-#: main.dfm:111
-#: main.dfm:119
-#: test/main.dfm:108
-#: test/main.dfm:116
+#. frmMain..pnTop..gbInput..lbInputOpts..Caption
+#. frmMain..pnTop..gbOutput..lbOutputOpts..Caption
+#. frmMain..ActionList1..acOptionsSourceFormat..Category
+#. frmMain..ActionList1..acOptionsTargetFormat..Category
+#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Category
+#: main.dfm:68
+#: main.dfm:232
+#: main.dfm:1426
+#: main.dfm:1431
+#: main.dfm:1445
msgid "Options"
msgstr ""
-#. frmMain..Panel1..cbInputFormat..Hint
-#: main.dfm:128
-msgid "Format for input from file"
-msgstr "Format d'entrée depuis un fichier"
-
-#. frmMain..Panel1..cbOutputFormat..Hint
-#: main.dfm:141
-msgid "Format for output to file"
-msgstr "Format de sortie vers un fichier"
-
-#. frmMain..Panel1..edOutputFile..Hint
-#: main.dfm:154
-msgid "Write data to given filename"
-msgstr "Ecrire les données dans un fichier"
+#. frmMain..pnTop..gbInput..lbInputFormat..Caption
+#. frmMain..pnTop..gbOutput..lbOutputFormat..Caption
+#: main.dfm:76
+#: main.dfm:262
+msgid "Format"
+msgstr ""
-#. frmMain..Panel1..edInputFile..Hint
-#: main.dfm:166
-msgid "Read data from given filename"
-msgstr "Lire les données de puis un fichier"
+#. frmMain..pnTop..gbInput..lbInputFile..Caption
+#. frmMain..pnTop..gbOutput..lbOutputFile..Caption
+#. frmMain..ActionList1..acFileExit..Category
+#. frmMain..ActionList1..acFileClearMemo..Category
+#. frmMain..ActionList1..acFileOutputToScreen..Category
+#. frmMain..ActionList1..acFileChangeLanguage..Category
+#: main.dfm:83
+#: main.dfm:269
+#: main.dfm:1407
+#: main.dfm:1436
+#: main.dfm:1451
+#: main.dfm:1463
+#: main.pas:805
+#: main.pas:855
+msgid "File"
+msgstr "Fichier"
-#. frmMain..Panel1..chbInputDevice..Hint
-#: main.dfm:176
+#. frmMain..pnTop..gbInput..chbInputDevice..Hint
+#: main.dfm:112
msgid "Read data from device instead from file"
msgstr "Lire les données depuis un périphérique plutôt qu'un fichier"
-#. frmMain..Panel1..chbInputDevice..Caption
-#. frmMain..Panel1..chbOutputDevice..Caption
-#. frmMain..Panel1..chbInputDevice..Caption
-#. frmMain..Panel1..chbOutputDevice..Caption
-#: main.dfm:177
-#: main.dfm:231
-#: test/main.dfm:167
-#: test/main.dfm:217
+#. frmMain..pnTop..gbInput..chbInputDevice..Caption
+#. frmMain..pnTop..gbOutput..chbOutputDevice..Caption
+#: main.dfm:115
+#: main.dfm:302
msgid "Device"
msgstr "Périphérique"
-#. frmMain..Panel1..cbInputDevice..Hint
-#: main.dfm:187
+#. frmMain..pnTop..gbInput..edInputOpts..Hint
+#: main.dfm:124
+msgid "Options for the selected input format"
+msgstr "Options du format d'entrée sélectionné"
+
+#. frmMain..pnTop..gbInput..edInputFile..Hint
+#: main.dfm:135
+msgid "Read data from given filename"
+msgstr "Lire les données de puis un fichier"
+
+#. frmMain..pnTop..gbInput..cbInputLang..Hint
+#: main.dfm:146
+msgid "Characterset for input data"
+msgstr "Code de caractères pour l'entrée"
+
+#. frmMain..pnTop..gbInput..cbInputLang....Items.Strings
+#. frmMain..pnTop..gbOutput..cbOutputLang....Items.Strings
+#: main.dfm:152
+#: main.dfm:366
+msgid "- default -"
+msgstr "- défaut -"
+
+#. frmMain..pnTop..gbInput..cbInputDevice..Hint
+#: main.dfm:179
msgid "Read data from device ..."
msgstr "Lire les données depuis le périphérique"
-#. frmMain..Panel1..cbInputDevice....Items.Strings
-#. frmMain..Panel1..cbOutputDevice....Items.Strings
-#. frmMain..Panel1..cbInputDevice....Items.Strings
-#. frmMain..Panel1..cbOutputDevice....Items.Strings
-#: main.dfm:191
-#: main.dfm:245
-#: test/main.dfm:180
-#: test/main.dfm:230
-msgid "USB"
-msgstr "USB"
-
-#. frmMain..Panel1..cbInputFormatDevice..Hint
-#: main.dfm:205
+#. frmMain..pnTop..gbInput..cbInputFormatDevice..Hint
+#: main.dfm:197
msgid "Format for input from device"
msgstr "Format d'entrée depuis le périphérique"
-#. frmMain..Panel1..cbOutputFormatDevice..Hint
-#: main.dfm:219
-msgid "Format for ouput to device"
-msgstr "Format de sortie vers le périphérique"
+#. frmMain..pnTop..gbInput..cbInputFormat..Hint
+#: main.dfm:211
+msgid "Format for input from file"
+msgstr "Format d'entrée depuis un fichier"
+
+#. frmMain..pnTop..gbOutput..Caption
+#: main.dfm:225
+#: main.pas:286
+#: main.pas:440
+msgid "Output"
+msgstr ""
+
+#. frmMain..pnTop..gbOutput..sbSaveFile..Hint
+#: main.dfm:276
+msgid "Start the file save dialog"
+msgstr "Menu de sauvegarde de fichier"
-#. frmMain..Panel1..chbOutputDevice..Hint
-#: main.dfm:230
+#. frmMain..pnTop..gbOutput..chbOutputDevice..Hint
+#: main.dfm:299
msgid "Write data to device instead to file"
msgstr "Ecrire les données sur le périphérique plutôt que dans un fichier"
-#. frmMain..Panel1..cbOutputDevice..Hint
-#: main.dfm:241
-msgid "Write data to device ..."
-msgstr "Ecrire les données sur le périphérique"
-
-#. frmMain..Panel1..edInputOpts..Hint
-#: main.dfm:258
-msgid "Options for the selected input format"
-msgstr "Options du format d'entrée sélectionné"
+#. frmMain..pnTop..gbOutput..cbOutputFormatDevice..Hint
+#: main.dfm:312
+msgid "Format for ouput to device"
+msgstr "Format de sortie vers le périphérique"
-#. frmMain..Panel1..edOutputOpts..Hint
-#: main.dfm:267
+#. frmMain..pnTop..gbOutput..edOutputOpts..Hint
+#: main.dfm:324
msgid "Options for the selected output format"
msgstr "Options du format de sortie sélectionné"
-#. frmMain..Panel2..lbWhat..Caption
-#. frmMain..Panel2..lbWhat..Caption
-#: main.dfm:286
-#: test/main.dfm:269
+#. frmMain..pnTop..gbOutput..cbOutputFormat..Hint
+#: main.dfm:335
+msgid "Format for output to file"
+msgstr "Format de sortie vers un fichier"
+
+#. frmMain..pnTop..gbOutput..edOutputFile..Hint
+#: main.dfm:348
+msgid "Write data to given filename"
+msgstr "Ecrire les données dans un fichier"
+
+#. frmMain..pnTop..gbOutput..cbOutputLang..Hint
+#: main.dfm:360
+msgid "Characterset for output data"
+msgstr "Code de caractères pour la sortie"
+
+#. frmMain..pnTop..gbOutput..cbOutputDevice..Hint
+#: main.dfm:393
+msgid "Write data to device ..."
+msgstr "Ecrire les données sur le périphérique"
+
+#. frmMain..pnBottom..lbWhat..Caption
+#: main.dfm:421
msgid "What ?"
msgstr "Quoi ?"
-#. frmMain..Panel2..cbWaypoints..Hint
-#: main.dfm:425
+#. frmMain..pnBottom..cbWaypoints..Hint
+#: main.dfm:560
msgid "Include waypoints"
msgstr "Inclure les waypoints"
-#. frmMain..Panel2..cbRoutes..Hint
-#: main.dfm:437
+#. frmMain..pnBottom..cbRoutes..Hint
+#: main.dfm:574
msgid "Include routes"
msgstr "Inclure les routes"
-#. frmMain..Panel2..cbRoutes..Caption
-#. frmMain..Panel2..cbRoutes..Caption
-#: main.dfm:438
-#: test/main.dfm:419
+#. frmMain..pnBottom..cbRoutes..Caption
+#: main.dfm:575
msgid "&Routes"
msgstr ""
-#. frmMain..Panel2..cbTracks..Hint
-#: main.dfm:447
+#. frmMain..pnBottom..cbTracks..Hint
+#: main.dfm:586
msgid "Include tracks"
msgstr "Inclure les traces"
-#. frmMain..Panel2..btnFilter..Hint
-#: main.dfm:457
-msgid "Filter incomming data before writing them to file or device"
-msgstr "Filtrer les données envoyées avant de les écrire sur un périphérique ou dans un fichier"
-
-#. frmMain..Panel2..btnFilter..Caption
-#. frmMain..ActionList1..acFilterSelect..Caption
-#. frmMain..Panel2..btnFilter..Caption
+#. frmMain..pnBottom..btnFilter..Caption
#. frmMain..ActionList1..acFilterSelect..Caption
-#: main.dfm:460
-#: main.dfm:990
-#: test/main.dfm:439
-#: test/main.dfm:968
+#: main.dfm:600
+#: main.dfm:1401
msgid "&Filter"
msgstr "&Filtre"
-#. frmMain..Panel2..btnProcess..Hint
-#: main.dfm:504
+#. frmMain..pnBottom..btnProcess..Hint
+#: main.dfm:644
msgid "Start data conversion"
msgstr "Démarrer la conversion de données"
-#. frmMain..Panel2..btnProcess..Caption
+#. frmMain..pnBottom..btnProcess..Caption
#. frmMain..ActionList1..acConvert..Caption
-#. frmMain..Panel2..btnProcess..Caption
-#. frmMain..ActionList1..acConvert..Caption
-#: main.dfm:507
-#: main.dfm:983
-#: test/main.dfm:485
-#: test/main.dfm:961
+#: main.dfm:647
+#: main.dfm:1394
msgid "let's go"
msgstr "Lancer"
-#. frmMain..stbMain........Text
-#. frmMain..stbMain........Text
-#: main.dfm:555
-#: test/main.dfm:533
-msgid "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)"
-msgstr "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)"
-
-#. frmMain..OpenDialog..Filter
#. frmMain..OpenDialog..Filter
-#: main.dfm:562
-#: test/main.dfm:540
+#: main.dfm:709
msgid "Garmin Mapsource mps|*.mps|All files|*.*"
msgstr "Garmin Mapsource mps|*.mps|Tous les fichiers|*.*"
#. frmMain..SaveDialog..Filter
-#. frmMain..SaveDialog..Filter
-#: main.dfm:568
-#: test/main.dfm:546
+#: main.dfm:715
msgid "All file(s)|*.*|Garmin MapSource mps|*.mps"
msgstr "Tous les fichier(s)|*.*|Garmin MapSource mps|*.mps"
#. frmMain..ActionList1..acConvert..Category
#. frmMain..ActionList1..acFilterSelect..Category
-#. frmMain..ActionList1..acConvert..Category
-#. frmMain..ActionList1..acFilterSelect..Category
-#: main.dfm:982
-#: main.dfm:989
-#: test/main.dfm:960
-#: test/main.dfm:967
+#: main.dfm:1393
+#: main.dfm:1400
msgid "Babel"
msgstr "Babel"
-#. frmMain..ActionList1..acFileExit..Category
-#. frmMain..ActionList1..acFileExit..Category
-#: main.dfm:995
-#: test/main.dfm:973
-msgid "File"
-msgstr "Fichier"
+#. frmMain..ActionList1..acFilterSelect..Hint
+#: main.dfm:1402
+msgid "Filter incomming data before writing them to file or device"
+msgstr "Filtrer les données envoyées avant de les écrire sur un périphérique ou dans un fichier"
#. frmMain..ActionList1..acFileExit..Caption
-#. frmMain..ActionList1..acFileExit..Caption
-#: main.dfm:996
-#: test/main.dfm:974
+#: main.dfm:1408
msgid "E&xit"
msgstr "F&ermer"
#. frmMain..ActionList1..acHelpAbout..Category
#. frmMain..ActionList1..acHelpIntro..Category
#. frmMain..ActionList1..acHelpReadme..Category
-#. frmMain..ActionList1..acHelpAbout..Category
-#. frmMain..ActionList1..acHelpIntro..Category
-#. frmMain..ActionList1..acHelpReadme..Category
-#: main.dfm:1001
-#: main.dfm:1006
-#: main.dfm:1010
-#: test/main.dfm:979
-#: test/main.dfm:984
-#: test/main.dfm:988
+#: main.dfm:1412
+#: main.dfm:1417
+#: main.dfm:1421
msgid "Help"
msgstr "Aide"
#. frmMain..ActionList1..acHelpAbout..Caption
-#. frmMain..ActionList1..acHelpAbout..Caption
-#: main.dfm:1002
-#: test/main.dfm:980
+#: main.dfm:1413
msgid "&About"
msgstr "&A propos"
#. frmMain..ActionList1..acHelpIntro..Caption
-#. frmMain..ActionList1..acHelpIntro..Caption
-#: main.dfm:1007
-#: test/main.dfm:985
+#: main.dfm:1418
msgid "&Intro"
msgstr "&Introduction"
#. frmMain..ActionList1..acHelpReadme..Caption
#. frmReadme..Caption
-#. frmMain..ActionList1..acHelpReadme..Caption
-#. frmReadme..Caption
-#: main.dfm:1011
+#: main.dfm:1422
#: readme.dfm:6
-#: test/main.dfm:989
-#: test/readme.dfm:6
msgid "GPSBabel README"
msgstr "GPSBabel README"
+#. frmMain..ActionList1..acOptionsSourceFormat..Caption
+#: main.dfm:1427
+msgid "... for source format"
+msgstr "... pour le format source"
+
+#. frmMain..ActionList1..acOptionsTargetFormat..Caption
+#: main.dfm:1432
+msgid "... for target format"
+msgstr "... pour le format cible"
+
+#. frmMain..ActionList1..acFileClearMemo..Caption
+#: main.dfm:1437
+msgid "Clear output"
+msgstr "Effacer la sortie"
+
+#. frmMain..ActionList1..acFileClearMemo..Hint
+#: main.dfm:1438
+msgid "Clear messages"
+msgstr "Effacer les messages"
+
+#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Caption
+#: main.dfm:1446
+msgid "Enable characterset transformation"
+msgstr "Activer la transformation du code de caractères"
+
+#. frmMain..ActionList1..acFileOutputToScreen..Caption
+#: main.dfm:1452
+msgid "Output to screen"
+msgstr "Afficher sur l'écran"
+
+#. frmMain..ActionList1..acFileChangeLanguage..Caption
+#: main.dfm:1464
+msgid "Change language"
+msgstr ""
+
#. frmMain..MainMenu1..mnuFile..Caption
-#. frmMain..MainMenu1..mnuFile..Caption
-#: main.dfm:1020
-#: test/main.dfm:998
+#: main.dfm:1473
msgid "&File"
msgstr "&Fichier"
#. frmMain..MainMenu1..mnuOptions..Caption
-#. frmMain..MainMenu1..mnuOptions..Caption
-#: main.dfm:1026
-#: test/main.dfm:1004
+#: main.dfm:1494
msgid "&Options"
msgstr ""
#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption
-#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption
-#: main.dfm:1028
-#: test/main.dfm:1006
+#: main.dfm:1496
msgid "Synthesize short names"
msgstr "Générer les nom courts"
#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint
-#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint
-#: main.dfm:1031
-#: test/main.dfm:1009
+#: main.dfm:1499
msgid "Ignore \"short\" names from source data and synthesize them from the long name"
msgstr "Ingorer les noms \"courts\" de la source de données et les générer à partir des noms longs"
+#. frmMain..MainMenu1..mnuOptions..mnuOptionsForceDataType..Caption
+#: main.dfm:1503
+msgid "Force selected GPS data types (nuketypes filter)"
+msgstr "Forcer le type de données GPS selctionné (filtre nuketypes)"
+
#. frmMain..MainMenu1..mnuHelp..Caption
-#. frmMain..MainMenu1..mnuHelp..Caption
-#: main.dfm:1040
-#: test/main.dfm:1018
+#: main.dfm:1538
msgid "&Help"
msgstr "&Aide"
-#: about.pas:76
-#: test/about.pas:76
-msgid "Version"
-msgstr ""
+#. frmOptions..Caption
+#: options.dfm:5
+msgid "Options for ..."
+msgstr "Options pour ..."
-#: about.pas:83
-#: test/about.pas:83
+#: about.pas:87
msgid "German by Olaf Klein"
msgstr "Allemand par Olaf Klein"
-#: about.pas:84
-#: test/about.pas:84
+#: about.pas:88
msgid "French by Lilian Morinon"
msgstr "Français par Lilian Morinon"
-#. Programmer's name for it: SGPSBabelURL
-#. Programmer's name for it: SGPSBabelURL
-#: common.pas:27
-#: test/common.pas:27
-msgid "http://www.gpsbabel.org"
-msgstr "http://www.gpsbabel.org"
-
-#: filter.pas:160
-#: test/filter.pas:160
-msgid "Value (%s) out of range (%g to %g)!"
-msgstr "Valeurs (%s) en dehors des limites (%g à %g)!"
+#: about.pas:131
+msgid ""
+"Please have a look at the file README.GUI.\n"
+"\n"
+"There you will find all information you need to\n"
+"get GPSBabelGUI working in your own language."
+msgstr ""
+"Consultez le fichier README.GUI\n"
+"\n"
+"Vous trouverez toutes l'information nécessaire\n"
+"pour faire fonctionner GPSBabelGUI dans votre langue."
-#: filter.pas:228
-#: test/filter.pas:228
+#: filter.pas:199
msgid "Feet"
msgstr "Pieds"
-#: filter.pas:229
-#: test/filter.pas:229
+#: filter.pas:200
msgid "Meter"
msgstr "Mètre"
-#: filter.pas:232
-#: test/filter.pas:232
+#: filter.pas:203
msgid "Miles"
msgstr ""
-#: filter.pas:233
-#: test/filter.pas:233
+#: filter.pas:204
msgid "Kilometer"
msgstr "Kilomètre"
-#: main.pas:181
-#: test/main.pas:181
+#: filter.pas:214
+msgid "Not supported by gpsbabel.exe, release %s!"
+msgstr "Non supporté par GPSBabel, version %s!"
+
+#: filter.pas:250
+msgid "Value (%s) out of range (%g to %g)!"
+msgstr "Valeurs (%s) en dehors des limites (%g à %g)!"
+
+#: filter.pas:530
+#: options.pas:575
+msgid "Discard changes?"
+msgstr "Ne pas tenir compte des changements?"
+
+#: main.pas:238
+msgid "Internal development release"
+msgstr "Version interne"
+
+#: main.pas:240
msgid "BETA"
msgstr "BETA"
-#: main.pas:183
-#: test/main.pas:183
+#: main.pas:242
msgid "Private release"
msgstr "Version privée"
-#: main.pas:185
-#: test/main.pas:185
+#: main.pas:244
msgid "Special release"
msgstr "Version spéciale"
-#: main.pas:283
-#: main.pas:378
-#: test/main.pas:281
-#: test/main.pas:376
+#: main.pas:313
+msgid "The file \"gpsbabel.exe\" found in current directory is too old!"
+msgstr "Le fichier \"gpsbabel.exe\" présent dans le répertoir courant est trop vieux!"
+
+#: main.pas:382
+#: main.pas:510
msgid "All files|*.*"
msgstr "Tous les fichiers|*.*"
-#: main.pas:420
-#: test/main.pas:417
+#: main.pas:448
+msgid "Select and edit options for \"%s\""
+msgstr "Selctionner et éditer les options pour \"%s\""
+
+#: main.pas:452
+msgid "No options available for \"%s\""
+msgstr "Pas d'option disponible pour \"%s\""
+
+#: main.pas:557
msgid "File %s not found."
msgstr "Fichier%s non trouvé."
-#: main.pas:441
-#: test/main.pas:438
+#: main.pas:615
msgid "File \"%s\" exists ! Overwrite ?"
msgstr "Le fichier \"%s\" existe déjà ! Ecraser ?"
-#: main.pas:442
-#: test/main.pas:439
+#: main.pas:616
msgid "Warning"
msgstr "Attention"
-#: main.pas:471
-#: test/main.pas:468
+#: main.pas:649
msgid "Could not run \"gpsbabel.exe\"!"
msgstr "Impossible d'éxécuter \"gpsbabel.exe\"!"
-#: main.pas:481
+#: main.pas:658
msgid "Sorry, gpsbabel.exe reported problems!"
msgstr "Désolé, GPSBabel a reporté un problème !"
-#: main.pas:482
-msgid "Error"
-msgstr "Erreur"
-
-#: main.pas:485
-#: test/main.pas:477
+#: main.pas:660
msgid "Converted successfully from \"%s\" to \"%s\"."
msgstr "Conversion de \"%s\" à \"%s\" réussie."
-#: main.pas:486
-#: test/main.pas:478
-msgid "Success"
-msgstr "Succès"
+#: main.pas:761
+msgid "GPSBabel, version %s"
+msgstr ""
+
+#: main.pas:795
+#: main.pas:846
+msgid "Port"
+msgstr ""
+
+#: main.pas:937
+msgid "Options for \"%s\""
+msgstr "Options pour \"%s\""
+
+#. override;
+#: options.pas:86
+msgid "Be aware, that most options are made for the output side. "
+msgstr "Attention, la plupart des options sont faites pour le format de sortie."
-#: utils.pas:86
-#: test/utils.pas:76
+#: options.pas:87
+msgid "Currently we don't have a flag which tells us which direction is used the options."
+msgstr "Nous n'avons pour l'instant pas de drapeau indiquant dans quelle direction sont utilisées les options."
+
+#: options.pas:145
+msgid "Short \"%s\""
+msgstr "Raccourci \"%s\""
+
+#: options.pas:246
+msgid "Invalid line format!"
+msgstr "Format de ligne invalide"
+
+#: options.pas:267
+msgid "Unknown option \"%s\"!"
+msgstr "Option inconnue \"%s\""
+
+#: utils.pas:108
msgid "Error WINAPI: Could not create \"NamedPipe\"!"
msgstr "Erreur WIANPI: Ne peut pas créer \"NamedPipe\"!"
-#: utils.pas:91
-#: test/utils.pas:81
+#: utils.pas:113
msgid "\"gpsbabel.exe\" not found!!!"
msgstr "\"gpsbabel.exe\" non trouvé!!!"
#. dwCreationFlags, // creation flags
-#. dwCreationFlags, // creation flags
-#: utils.pas:110
-#: test/utils.pas:100
+#: utils.pas:132
msgid "Could not run \"gpsbabel.exe\" (Error %d)!"
msgstr "Impossible d'éxecuter \"gpsbabel.exe\" (Error %d)!"
-#: utils.pas:116
-#: test/utils.pas:106
+#: utils.pas:160
msgid "\"gpsbabel.exe\" returned error 0x%x (%d)"
msgstr "\"gpsbabel.exe\" a renvoyé l'erreur 0x%x (%d)"
interface\r
\r
uses\r
- gnugettextD4,\r
+ TypInfo, gnugettext, gnugettextDx,\r
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
StdCtrls, Buttons, ExtCtrls,\r
- common, utils, ImgList, ActnList, Menus, ComCtrls;\r
+ common, utils, ImgList, ActnList, Menus, ComCtrls, ToolWin;\r
\r
type\r
TfrmMain = class(TForm)\r
- Panel1: TPanel;\r
- sbOpenFile: TSpeedButton;\r
- cbInputFormat: TComboBox;\r
- cbOutputFormat: TComboBox;\r
- edOutputFile: TEdit;\r
- sbSaveFile: TSpeedButton;\r
- lbInputFile: TLabel;\r
- lbOutputFile: TLabel;\r
- lbInputFormat: TLabel;\r
- lbOutputFormat: TLabel;\r
- edInputFile: TEdit;\r
- Panel2: TPanel;\r
+ pnTop: TPanel;\r
+ pnBottom: TPanel;\r
cbWaypoints: TCheckBox;\r
cbRoutes: TCheckBox;\r
cbTracks: TCheckBox;\r
acHelpIntro: TAction;\r
Intro1: TMenuItem;\r
About1: TMenuItem;\r
- chbInputDevice: TCheckBox;\r
- cbInputDevice: TComboBox;\r
- cbInputFormatDevice: TComboBox;\r
- cbOutputFormatDevice: TComboBox;\r
- chbOutputDevice: TCheckBox;\r
- cbOutputDevice: TComboBox;\r
mnuReadme: TMenuItem;\r
acHelpReadme: TAction;\r
N1: TMenuItem;\r
mnuOptions: TMenuItem;\r
mnuSynthesizeShortNames: TMenuItem;\r
- edInputOpts: TEdit;\r
+ Filter1: TMenuItem;\r
+ N2: TMenuItem;\r
+ acOptionsSourceFormat: TAction;\r
+ acOptionsTargetFormat: TAction;\r
+ forsourceformat1: TMenuItem;\r
+ fortargetformat1: TMenuItem;\r
+ acFileClearMemo: TAction;\r
+ N3: TMenuItem;\r
+ Clearoutput1: TMenuItem;\r
+ acFinalizeDropDowns: TAction;\r
+ N4: TMenuItem;\r
+ mnuOptionsForceDataType: TMenuItem;\r
+ acOptionsEnableCharactersetTransformation: TAction;\r
+ Enablecharactersettransformation1: TMenuItem;\r
+ gbInput: TGroupBox;\r
+ sbOpenFile: TSpeedButton;\r
lbInputOpts: TLabel;\r
+ lbInputFormat: TLabel;\r
+ lbInputFile: TLabel;\r
+ edInputOpts: TComboBox;\r
+ edInputFile: TComboBox;\r
+ chbInputDevice: TCheckBox;\r
+ cbInputLang: TComboBox;\r
+ cbInputFormatDevice: TComboBox;\r
+ cbInputFormat: TComboBox;\r
+ cbInputDevice: TComboBox;\r
+ btnInputOpts: TSpeedButton;\r
+ gbOutput: TGroupBox;\r
+ cbOutputFormatDevice: TComboBox;\r
+ chbOutputDevice: TCheckBox;\r
lbOutputOpts: TLabel;\r
- edOutputOpts: TEdit;\r
- Filter1: TMenuItem;\r
+ edOutputOpts: TComboBox;\r
+ btnOutputOpts: TSpeedButton;\r
+ lbOutputFormat: TLabel;\r
+ cbOutputFormat: TComboBox;\r
+ lbOutputFile: TLabel;\r
+ edOutputFile: TComboBox;\r
+ sbSaveFile: TSpeedButton;\r
+ cbOutputLang: TComboBox;\r
+ cbOutputDevice: TComboBox;\r
+ acFileOutputToScreen: TAction;\r
+ Outputtoscreen1: TMenuItem;\r
+ acDebugCreatePo: TAction;\r
+ mnuDebug: TMenuItem;\r
+ Createoptionspo1: TMenuItem;\r
+ acFileChangeLanguage: TAction;\r
+ Changelanguage1: TMenuItem;\r
+ N5: TMenuItem;\r
procedure FormShow(Sender: TObject);\r
procedure FormCreate(Sender: TObject);\r
procedure OpenButtonClick(Sender: TObject);\r
- procedure ComboChange(Sender: TObject);\r
procedure edInputFileChange(Sender: TObject);\r
procedure CheckInput;\r
procedure edOutputFileChange(Sender: TObject);\r
procedure acHelpReadmeExecute(Sender: TObject);\r
procedure mnuSynthesizeShortNamesClick(Sender: TObject);\r
procedure edOutputFileKeyPress(Sender: TObject; var Key: Char);\r
+ procedure cbInputFormatDeviceChange(Sender: TObject);\r
+ procedure cbOutputFormatDeviceChange(Sender: TObject);\r
+ procedure cbInputFormatChange(Sender: TObject);\r
+ procedure cbOutputFormatChange(Sender: TObject);\r
+ procedure acOptionsSourceFormatExecute(Sender: TObject);\r
+ procedure acOptionsTargetFormatExecute(Sender: TObject);\r
+ procedure btnInputOptsClick(Sender: TObject);\r
+ procedure acFileClearMemoExecute(Sender: TObject);\r
+ procedure acFinalizeDropDownsExecute(Sender: TObject);\r
+ procedure mnuOptionsForceDataTypeClick(Sender: TObject);\r
+ procedure acOptionsEnableCharactersetTransformationExecute(\r
+ Sender: TObject);\r
+ procedure acFileOutputToScreenExecute(Sender: TObject);\r
+ procedure acDebugCreatePoExecute(Sender: TObject);\r
+ procedure acFileChangeLanguageExecute(Sender: TObject);\r
private\r
{ Private-Deklarationen }\r
FCaps: TCapabilities;\r
+ FOpts: TOptions;\r
+ FLang: TStringList;\r
FFirstShow: Boolean;\r
FOutHandmade: Boolean;\r
procedure AddToOutput(const Str: string);\r
procedure AddToOutputFmt(const Format: string; const Args: array of const);\r
- procedure InitCombo(Target: TComboBox; ForRead, ForDevice: Boolean);\r
+ procedure ComboBoxChanged(const Format: string; IsInput, IsFile: Boolean);\r
+ procedure DoOnIdle(Sender: TObject; var Done: Boolean);\r
+ procedure EnableOptions(const Version: string);\r
+ function HandleOptions(const Format: string; AObject: TObject; IsInput: Boolean): Boolean;\r
+ function HandleOptionsDlg(const Format: string; var str: string; IsInput: Boolean): Boolean;\r
+ procedure HistoryChanged(Box: TComboBox; Swap: Boolean = False);\r
+ procedure InitCombo(Target: TComboBox; IsInput, ForDevice: Boolean);\r
+ procedure LoadLanguages;\r
procedure LoadFileFormats;\r
procedure LoadVersion;\r
+ procedure WMOPTIONSCHANGED(var Msg: TMessage); message WM_OPTIONS_CHANGED;\r
procedure WMSTARTUP(var Msg: TMessage); message WM_STARTUP;\r
procedure StoreProfiles;\r
public\r
\r
implementation\r
\r
-uses filter, about, readme;\r
+uses\r
+ filter, about, readme, options;\r
\r
{$R *.DFM}\r
\r
{ TfrmMain }\r
\r
procedure TfrmMain.FormCreate(Sender: TObject);\r
-var\r
- s: string;\r
begin\r
- gnugettextD4.TranslateComponent(SELF);\r
+ TP_Ignore(mnuDebug, 'mnuDebug');\r
+{$IFOPT D-}\r
+ mnuDebug.Visible := False;\r
+{$ENDIF}\r
+ TranslateComponent(SELF);\r
+ LoadLanguages;\r
+\r
+ FFirstShow := True;\r
\r
// VS_FF_DEBUG The file contains debugging information or is compiled with debugging features enabled.\r
// VS_FF_INFOINFERRED The file's version structure was created dynamically;\r
// but is a variation of the normal file of the same version number.\r
// If this flag is set, the StringFileInfo structure should contain a SpecialBuild\r
\r
- if (CFixedFileinfo.dwFileFlags and VS_FF_PRERELEASE <> 0) then\r
+ if (CFixedFileinfo.dwFileFlags and VS_FF_DEBUG <> 0) then\r
+ Caption := Format('%s (%s)', [Caption, _('Internal development release')])\r
+ else if (CFixedFileinfo.dwFileFlags and VS_FF_PRERELEASE <> 0) then\r
Caption := Format('%s (%s)', [Caption, _('BETA')])\r
else if (CFixedFileinfo.dwFileFlags and VS_FF_PRIVATEBUILD <> 0) then\r
Caption := Format('%s (%s)', [Caption, _('Private release')])\r
else if (CFixedFileinfo.dwFileFlags and VS_FF_SPECIALBUILD <> 0) then\r
Caption := Format('%s (%s)', [Caption, _('Special release')]);\r
\r
+ memoOutput.Lines.Clear;\r
\r
FCaps := TCapabilities.Create;\r
+ FOpts := TOptions.Create(FCaps);\r
\r
OpenDialog.InitialDir := ReadProfile(OpenDialog.Tag);\r
SaveDialog.InitialDir := ReadProfile(SaveDialog.Tag);\r
if not ComboBoxSelect(cbOutputDevice, ReadProfile(cbOutputDevice.Tag)) then\r
cbOutputDevice.ItemIndex := 0;\r
\r
- FFirstShow := True;\r
-\r
FixAlign(sbOpenFile, 8);\r
FixAlign(sbSaveFile, 8);\r
- edInputOpts.Left := lbInputOpts.Left + lbInputOpts.Width + 8;\r
- edOutputOpts.Left := lbOutputOpts.Left + lbOutputOpts.Width + 8;\r
- FixAlign(edInputOpts, 8);\r
- FixAlign(edOutputOpts, 8);\r
- FixAlign(btnProcess, 8);\r
- FixAlign(btnFilter, 16, btnProcess);\r
FixAlign(edInputFile, 8, sbOpenFile);\r
FixAlign(edOutputFile, 8, sbSaveFile);\r
\r
+ FixAlign(cbInputLang, 8);\r
+ btnInputOpts.Left := lbInputOpts.Left + lbInputOpts.Width + 8;\r
+ edInputOpts.Left := btnInputOpts.Left + btnInputOpts.Width + 4;\r
+ edInputOpts.Width := cbInputLang.Left - edInputOpts.Left - 4;\r
+\r
+ FixAlign(cbOutputLang, 8);\r
+ btnOutputOpts.Left := lbOutputOpts.Left + lbOutputOpts.Width + 8;\r
+ edOutputOpts.Left := btnOutputOpts.Left + btnOutputOpts.Width + 4;\r
+ edOutputOpts.Width := cbOutputLang.Left - edOutputOpts.Left - 4;\r
+\r
+ FixAlign(btnProcess, 8);\r
+ FixAlign(btnFilter, 16, btnProcess);\r
+\r
edInputFile.Text := ReadProfile(edInputFile.Tag);\r
+\r
+ cbInputLang.ItemIndex := 0;\r
+ cbOutputLang.ItemIndex := 0;\r
+\r
+ Application.OnIdle := Self.DoOnIdle;\r
+\r
+ gbInput.Caption := '>>> ' + _('Input');\r
+ gbOutput.Caption := '<<< ' + _('Output');\r
+\r
+ chbInputDevice.Caption := '[' + chbInputDevice.Caption + ']';\r
+ chbOutputDevice.Caption := '[' + chbOutputDevice.Caption + ']';\r
+end;\r
+\r
+procedure TfrmMain.LoadLanguages;\r
+begin\r
+ FLang := TStringList.Create;\r
+\r
+ DefaultInstance.GetListOfLanguages('default', FLang);\r
+ if (FLang.IndexOf('en') < 0) then FLang.Add('en');\r
+ acFileChangeLanguage.Visible := (FLang.Count > 1);\r
end;\r
\r
procedure TfrmMain.LoadFileFormats;\r
begin\r
l := TStringList.Create;\r
try\r
- gpsbabel('-^2', l);\r
+\r
+ if (gpsbabel_vfmt >= '001.002.008') then\r
+ gpsbabel('-^3', l)\r
+ else if (gpsbabel_vfmt >= '001.002.005') then\r
+ gpsbabel('-^2', l)\r
+ else begin\r
+ MessageDlg(_('The file "gpsbabel.exe" found in current directory is too old!'),\r
+ mtError, [mbOK], 0);\r
+ Halt(1);\r
+ end;\r
+\r
FCaps.List := l;\r
- InitCombo(cbInputFormat, True, False);\r
- InitCombo(cbOutputFormat, False, False);\r
+ FOpts.List := l;\r
InitCombo(cbInputFormatDevice, False, True);\r
InitCombo(cbOutputFormatDevice, True, True);\r
+ InitCombo(cbInputFormat, True, False);\r
+ InitCombo(cbOutputFormat, False, False);\r
finally\r
l.Free;\r
end;\r
procedure TfrmMain.FormShow(Sender: TObject);\r
begin\r
if not(FFirstShow) then Exit;\r
+ \r
FFirstShow := False;\r
PostMessage(SELF.Handle, WM_STARTUP, 0, 0); // keep sure our window is visible\r
end;\r
procedure TfrmMain.WMSTARTUP(var Msg: TMessage);\r
begin\r
LoadVersion;\r
+ EnableOptions(gpsbabel_vfmt);\r
LoadFileFormats;\r
\r
// ? valid README form\r
acHelpReadme.Enabled := (frmReadme.Memo.Lines.Count > 0);\r
end;\r
\r
-procedure TfrmMain.InitCombo(Target: TComboBox; ForRead, ForDevice: Boolean);\r
+procedure TfrmMain.InitCombo(Target: TComboBox; IsInput, ForDevice: Boolean);\r
var\r
i: Integer;\r
OK: Boolean;\r
if (ForDevice and not(FCaps.IsDevice(i))) then Continue;\r
if not(ForDevice) and not FCaps.IsFile(i) then Continue;\r
\r
- if (ForRead) then\r
+ if (IsInput) then\r
OK := FCaps.CanReadAny(i)\r
else\r
OK := FCaps.CanWriteAny(i);\r
s := ReadProfile(Target.Tag);\r
ComboBoxSelect(Target, s);\r
\r
- ComboChange(Target);\r
+ ComboBoxChanged(Target.Text, IsInput, not(ForDevice));\r
end;\r
\r
procedure TfrmMain.OpenButtonClick(Sender: TObject);\r
if not SELF.OpenDialog.Execute then Exit;\r
\r
edInputFile.Text := OpenDialog.FileName;\r
+ CheckInput;\r
end;\r
\r
-procedure TfrmMain.ComboChange(Sender: TObject);\r
+procedure TfrmMain.ComboBoxChanged(const Format: string; IsInput, IsFile: Boolean);\r
var\r
caps: Integer;\r
ext: string;\r
+ ac: TAction;\r
begin\r
- caps := FCaps.GetCaps(TComboBox(Sender).Text);\r
- ext := FCaps.GetExt(TComboBox(Sender).Text);\r
- if FOutHandmade and (ext = '') then\r
+ caps := FCaps.GetCaps(Format);\r
+ ext := FCaps.GetExt(Format);\r
+ if IsFile and FOutHandmade and (ext = '') then\r
begin\r
ext := SysUtils.ExtractFileExt(edOutputFile.Text);\r
if (ext <> '') and (ext[1] = '.') then Delete(ext, 1, 1);\r
end;\r
\r
- if (Sender = cbInputFormat) then\r
+ if IsInput then\r
begin\r
wptInputOK.Enabled := (caps and 1 <> 0);\r
trkInputOK.Enabled := (caps and 4 <> 0);\r
wptOutputOK.Enabled := (caps and 2 <> 0);\r
trkOutputOK.Enabled := (caps and 8 <> 0);\r
rteOutputOK.Enabled := (caps and 32 <> 0);\r
- if (edOutputFile.Text <> '') then\r
+ if IsFile and (edOutputFile.Text <> '') and (edOutputFile.Text <> '-') then\r
begin\r
if (ext <> '') then FOutHandmade := False;\r
edOutputFile.Text := SysUtils.ChangeFileExt(edOutputFile.Text, '.' + ext);\r
end;\r
end;\r
+\r
CheckInput;\r
+\r
+ if IsInput then\r
+ begin\r
+ edInputOpts.Text := '';\r
+ edInputOpts.Items.Clear;\r
+ \r
+ ac := acOptionsSourceFormat;\r
+ acOptionsSourceFormat.Caption := _('Input') + ': ' + Format;\r
+ btnInputOpts.Caption := '';\r
+// ImageList1.GetBitmap(11, btnInputOpts.Glyph);\r
+ end\r
+ else begin\r
+ edOutputOpts.Text := '';\r
+ edOutputOpts.Items.Clear;\r
+\r
+ ac := acOptionsTargetFormat;\r
+ acOptionsTargetFormat.Caption := _('Output') + ': ' + Format;\r
+ btnOutputOpts.Caption := '';\r
+// ImageList1.GetBitmap(11, btnOutputOpts.Glyph);\r
+ end;\r
+\r
+ ac.Enabled := FOpts.HasFormatOpts(Format);\r
+ if ac.Enabled then\r
+ begin\r
+ ac.Hint := SysUtils.Format(_('Select and edit options for "%s"'), [Format]);\r
+ end\r
+ else\r
+ begin\r
+ ac.Hint := SysUtils.Format(_('No options available for "%s"'), [Format]);\r
+ end;\r
end;\r
\r
procedure TfrmMain.edInputFileChange(Sender: TObject);\r
if not SELF.SaveDialog.Execute then Exit;\r
\r
edOutputFile.Text := SaveDialog.FileName;\r
+ CheckInput;\r
end;\r
\r
procedure TfrmMain.acConvertExecute(Sender: TObject);\r
Fatal: Boolean;\r
\r
begin\r
- cmdline := '';\r
+ btnProcess.Enabled := False;\r
+ try\r
+ acFinalizeDropDownsExecute(nil);\r
\r
- if chbInputDevice.Checked then\r
- IFormat := FCaps.GetName(cbInputFormatDevice.Text)\r
- else\r
- IFormat := FCaps.GetName(cbInputFormat.Text);\r
- if chbOutputDevice.Checked then\r
- OFormat := FCaps.GetName(cbOutputFormatDevice.Text)\r
- else\r
- OFormat := FCaps.GetName(cbOutputFormat.Text);\r
+ cmdline := '';\r
\r
- if cbWaypoints.Checked then cmdline := cmdline + ' -w';\r
- if cbRoutes.Checked then cmdline := cmdline + ' -r';\r
- if cbTracks.Checked then cmdline := cmdline + ' -t';\r
+ if chbInputDevice.Checked then\r
+ IFormat := FCaps.GetName(cbInputFormatDevice.Text)\r
+ else\r
+ IFormat := FCaps.GetName(cbInputFormat.Text);\r
+ if chbOutputDevice.Checked then\r
+ OFormat := FCaps.GetName(cbOutputFormatDevice.Text)\r
+ else\r
+ OFormat := FCaps.GetName(cbOutputFormat.Text);\r
\r
- if mnuSynthesizeShortNames.Checked then cmdline := cmdline + ' -s';\r
+ if cbWaypoints.Checked then cmdline := cmdline + ' -w';\r
+ if cbRoutes.Checked then cmdline := cmdline + ' -r';\r
+ if cbTracks.Checked then cmdline := cmdline + ' -t';\r
\r
- if chbInputDevice.Checked then\r
- s := SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':'\r
- else begin\r
- s := edInputFile.Text;\r
- if not(FileExists(s)) then\r
- raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]);\r
- s := '"' + s + '"';\r
- end;\r
+ if mnuSynthesizeShortNames.Checked then cmdline := cmdline + ' -s';\r
\r
- if (Trim(edInputOpts.Text) <> '') then\r
- cmdline := Format('%s -i %s,%s -f %s',\r
- [cmdline, IFormat, Trim(edInputOpts.Text), s])\r
- else\r
- cmdline := Format('%s -i %s -f %s',\r
- [cmdline, IFormat, s]);\r
+ if chbInputDevice.Checked then\r
+ s := SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':'\r
+ else begin\r
+ s := edInputFile.Text;\r
+ if not(FileExists(s)) then\r
+ raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]);\r
+ s := '"' + s + '"';\r
+ end;\r
\r
- cmdline := cmdline + frmFilter.CmdLine;\r
+ // Input character set\r
\r
- if (chbOutputDevice.Checked) then\r
- s := cbOutputDevice.Text + ':'\r
- else begin\r
- s := edOutputFile.Text;\r
+ if acOptionsEnableCharactersetTransformation.Checked and\r
+ (cbInputLang.ItemIndex > 0) then\r
+ cmdline := Format('%s -c %s',\r
+ [cmdline, cbInputLang.Text]);\r
\r
- if FileExists(s) then\r
- begin\r
- if (Windows.MessageBox(SELF.Handle,\r
- PChar(Format(_('File "%s" exists ! Overwrite ?'), [s])),\r
- PChar(_('Warning')), MB_YESNO) <> IDYES) then Exit;\r
- end\r
- else\r
+ if (Trim(edInputOpts.Text) <> '') then\r
+ cmdline := Format('%s -i %s,%s -f %s',\r
+ [cmdline, IFormat, Trim(edInputOpts.Text), s])\r
+ else\r
+ cmdline := Format('%s -i %s -f %s',\r
+ [cmdline, IFormat, s]);\r
+\r
+ if mnuOptionsForceDataType.Checked then\r
begin\r
- str := TFileStream.Create(s, fmCreate);\r
- str.Free;\r
+ s := '';\r
+ if not(cbWaypoints.Checked) then\r
+ s := s + ',waypoints'; \r
+ if not(cbRoutes.Checked) then\r
+ s := s + ',routes';\r
+ if not(cbTracks.Checked) then\r
+ s := s + ',tracks';\r
+ if (s <> '') then\r
+ cmdline := Format('%s -x nuketypes%s', [cmdline, s]);\r
end;\r
- s := '"' + s + '"';\r
- end;\r
\r
- if (Trim(edOutputOpts.Text) <> '') then\r
- cmdline := Format('%s -o %s,%s -F %s',\r
- [cmdline, OFormat, Trim(edOutputOpts.Text), s])\r
- else\r
- cmdline := Format('%s -o %s -F %s',\r
- [cmdline, OFormat, s]);\r
-\r
- while (cmdline[1] = ' ') do System.Delete(cmdline, 1, 1);\r
+ // Add filter options\r
\r
- AddToOutput('gpsbabel.exe ' + cmdline);\r
+ if (frmFilter <> nil) then\r
+ cmdline := cmdline + frmFilter.CmdLine;\r
\r
- list := TStringList.Create;\r
- try\r
- CSave := Cursor;\r
- Cursor := crHourGlass;\r
- Application.ProcessMessages;\r
- Sleep(50);\r
+ // Output character set\r
\r
- if not gpsbabel(cmdline, list, @Fatal) then\r
- raise eGPSBabelError.Create(_('Could not run "gpsbabel.exe"!'));\r
+ if acOptionsEnableCharactersetTransformation.Checked and\r
+ (cbOutputLang.ItemIndex > 0) then\r
+ cmdline := Format('%s -c %s',\r
+ [cmdline, cbOutputLang.Text]);\r
\r
- if (list.Count > 0) then\r
+ if (chbOutputDevice.Checked) then\r
begin\r
- AddToOutput('');\r
- AddToOutput(string(list.GetText));\r
+ if (cbOutputDevice.Text = 'SCREEN') then\r
+ s := '-'\r
+ else\r
+ s := cbOutputDevice.Text + ':'\r
+ end\r
+ else begin\r
+ s := edOutputFile.Text;\r
+\r
+ if (s <> '-') then\r
+ begin\r
+ if FileExists(s) then\r
+ begin\r
+ if (Windows.MessageBox(SELF.Handle,\r
+ PChar(Format(_('File "%s" exists ! Overwrite ?'), [s])),\r
+ PChar(_('Warning')), MB_YESNO) <> IDYES) then Exit;\r
+ end\r
+ else\r
+ begin\r
+ str := TFileStream.Create(s, fmCreate);\r
+ str.Free;\r
+ end;\r
+ s := '"' + s + '"';\r
+ end\r
+ else\r
+ s := '-';\r
end;\r
\r
- if (Fatal) then\r
- MessageBox(SELF.Handle,\r
- PChar(_('Sorry, gpsbabel.exe reported problems!')),\r
- PChar(_('Error')), MB_OK)\r
+ if (Trim(edOutputOpts.Text) <> '') then\r
+ cmdline := Format('%s -o %s,%s -F %s',\r
+ [cmdline, OFormat, Trim(edOutputOpts.Text), s])\r
else\r
- MessageBox(SELF.Handle,\r
- PChar(Format(_('Converted successfully from "%s" to "%s".'), [IFormat, OFormat])),\r
- PChar(_('Success')), MB_OK);\r
+ cmdline := Format('%s -o %s -F %s',\r
+ [cmdline, OFormat, s]);\r
\r
- finally\r
+ while (cmdline[1] = ' ') do System.Delete(cmdline, 1, 1);\r
+\r
+ s := 'gpsbabel.exe ' + cmdline;\r
+ AddToOutput(s);\r
\r
- Cursor := CSave;\r
- list.Free;\r
+ list := TStringList.Create;\r
+ try\r
+ CSave := Cursor;\r
+ Cursor := crHourGlass;\r
+ Application.ProcessMessages;\r
+ Sleep(50);\r
\r
+ if not gpsbabel(cmdline, list, @Fatal, False) then\r
+ raise eGPSBabelError.Create(_('Could not run "gpsbabel.exe"!'));\r
+\r
+ if (list.Count > 0) then\r
+ begin\r
+ AddToOutput('');\r
+ AddToOutput(string(list.GetText));\r
+ end;\r
+\r
+ if (Fatal) then\r
+ MessageDlg(_('Sorry, gpsbabel.exe reported problems!'), mtError, [mbOK], 0)\r
+ else\r
+ MessageDlg(Format(_('Converted successfully from "%s" to "%s".'), [IFormat, OFormat]),\r
+ mtInformation, [mbOK], 0);\r
+\r
+ finally\r
+\r
+ Cursor := CSave;\r
+ list.Free;\r
+\r
+ end;\r
+\r
+ finally\r
+ btnProcess.Enabled := True;\r
end;\r
end;\r
\r
\r
procedure TfrmMain.acFilterSelectExecute(Sender: TObject);\r
begin\r
+ if (frmFilter = nil) then\r
+ Application.CreateForm(TfrmFilter, frmFilter);\r
if not(frmFilter.ShowModal = mrOk) then Exit;\r
end;\r
\r
\r
procedure TfrmMain.LoadVersion;\r
var\r
- l: TStrings;\r
+ l, l2: TStringList;\r
i: Integer;\r
s: string;\r
+ cx: PChar;\r
+ \r
+ procedure SpaceDelimited(const str: string; list: TStrings);\r
+ var\r
+ s: string;\r
+ cin, cend, cx: PChar;\r
+ begin\r
+ s := Trim(str);\r
+ cin := PChar(s);\r
+ cend := cin + StrLen(cin);\r
+ while (cin < cend) do\r
+ begin\r
+ while (cin^ = ' ') do cin := cin + 1;\r
+ cx := StrScan(cin, ' ');\r
+ if (cx = nil) then cx := cend;\r
+ cx^ := #0;\r
+ list.Add(string(cin));\r
+ cin := cx + 1;\r
+ end;\r
+ end;\r
+\r
begin\r
+ gpsbabel_major := 0;\r
+ gpsbabel_minor := 0;\r
+ gpsbabel_release := 0;\r
+ \r
l := TStringList.Create;\r
try\r
if not gpsbabel('-V', l) then Exit;\r
s := Trim(l.Strings[i]);\r
if (Copy(AnsiUpperCase(s), 1, 8) = 'GPSBABEL') then\r
begin\r
- stbMain.Panels[0].Text := s;\r
- stbMain.Panels[0].Width := stbMain.Canvas.TextWidth(s) +\r
- Trunc((Length(s)* 1.5));\r
+ l2 := TStringList.Create;\r
+ try\r
+ SpaceDelimited(s, l2);\r
+ gpsbabel_version := l2[2];\r
+ cx := PChar(gpsbabel_version);\r
+ gpsbabel_major := atoi(cx);\r
+ cx := StrScan(cx, '.');\r
+ if (cx <> nil) then\r
+ begin\r
+ gpsbabel_minor := atoi(cx + 1);\r
+ cx := StrScan(cx + 1, '.');\r
+ if (cx <> nil) then\r
+ gpsbabel_release := atoi(cx + 1);\r
+ end;\r
+\r
+ gpsbabel_vfmt := Format('%3.3d.%3.3d.%3.3d', [\r
+ gpsbabel_major, gpsbabel_minor, gpsbabel_release]);\r
+\r
+ s := Format(_('GPSBabel, version %s'), [gpsbabel_version]);\r
+ stbMain.Panels[0].Text := s;\r
+ stbMain.Panels[0].Width := stbMain.Canvas.TextWidth(s) +\r
+ Trunc((Length(s)* 1.5));\r
+ Break;\r
+ finally\r
+ l2.Free;\r
+ end;\r
end;\r
end;\r
\r
\r
procedure TfrmMain.acHelpAboutExecute(Sender: TObject);\r
begin\r
+ if (frmAbout = nil) then\r
+ Application.CreateForm(TfrmAbout, frmAbout);\r
frmAbout.ShowModal;\r
end;\r
\r
begin\r
edInputFile.Visible := False;\r
sbOpenFile.Visible := False;\r
+ cbInputFormat.Visible := False;\r
cbInputDevice.Visible := True;\r
cbInputFormatDevice.Visible := True;\r
+ lbInputFile.Caption := _('Port');\r
end\r
else\r
begin\r
+ cbInputFormat.Visible := True;\r
cbInputFormatDevice.Visible := False;\r
cbInputDevice.Visible := False;\r
edInputFile.Visible := True;\r
+ cbInputDevice.Visible := False;\r
sbOpenFile.Visible := True;\r
+ lbInputFile.Caption := _('File');\r
end;\r
CheckInput;\r
end;\r
\r
if TCheckBox(Sender).Checked then\r
begin\r
- edOutputFile.Visible := False;\r
- sbSaveFile.Visible := False;\r
cbOutputFormatDevice.Visible := True;\r
cbOutputDevice.Visible := True;\r
+ edOutputFile.Visible := False;\r
+ sbSaveFile.Visible := False;\r
+ cbOutputFormat.Visible := False;\r
+ lbOutputFile.Caption := _('Port');\r
end\r
else\r
begin\r
- cbOutputDevice.Visible := False;\r
- cbOutputFormatDevice.Visible := False;\r
+ cbOutputFormat.Visible := True;\r
sbSaveFile.Visible := True;\r
edOutputFile.Visible := True;\r
+ cbOutputDevice.Visible := False;\r
+ cbOutputFormatDevice.Visible := False;\r
+ lbOutputFile.Caption := _('File');\r
end;\r
CheckInput;\r
end;\r
FOutHandmade := True;\r
end;\r
\r
+procedure TfrmMain.cbInputFormatDeviceChange(Sender: TObject);\r
+begin\r
+ ComboBoxChanged(cbInputFormatDevice.Text, True, False);\r
+end;\r
+\r
+procedure TfrmMain.cbOutputFormatDeviceChange(Sender: TObject);\r
+begin\r
+ ComboBoxChanged(cbOutputFormatDevice.Text, False, False);\r
+end;\r
+\r
+procedure TfrmMain.cbInputFormatChange(Sender: TObject);\r
+begin\r
+ ComboBoxChanged(cbInputFormat.Text, True, True);\r
+end;\r
+\r
+procedure TfrmMain.cbOutputFormatChange(Sender: TObject);\r
+begin\r
+ ComboBoxChanged(cbOutputFormat.Text, False, True);\r
+end;\r
+\r
+procedure TfrmMain.acOptionsSourceFormatExecute(Sender: TObject);\r
+begin\r
+ if chbInputDevice.Checked then\r
+ HandleOptions(cbInputFormatDevice.Text, edInputOpts, True)\r
+ else\r
+ HandleOptions(cbInputFormat.Text, edInputOpts, True)\r
+end;\r
+\r
+procedure TfrmMain.DoOnIdle(Sender: TObject; var Done: Boolean);\r
+begin\r
+ inherited;\r
+ acFileClearMemo.Enabled := (memoOutput.Lines.Count > 0);\r
+ Done := True;\r
+end;\r
+\r
+procedure TfrmMain.EnableOptions(const Version: string);\r
+begin\r
+ if (Version >= '001.002.008') then\r
+ mnuOptionsForceDataType.Enabled := True;\r
+ if (version >= '001.002.007') then\r
+ acOptionsEnableCharactersetTransformation.Enabled := True;\r
+end;\r
+\r
+function TfrmMain.HandleOptions(const Format: string; AObject: TObject; IsInput: Boolean): Boolean;\r
+var\r
+ s: string;\r
+ ok: Boolean;\r
+begin\r
+ s := GetStrProp(AObject, 'Text');\r
+ if HandleOptionsDlg(Format, s, IsInput) then\r
+ begin\r
+ SetStrProp(AObject, 'Text', s);\r
+ Result := True;\r
+ end\r
+ else\r
+ Result := False;\r
+end;\r
+\r
+function TfrmMain.HandleOptionsDlg(const Format: string; var str: string; IsInput: Boolean): Boolean;\r
+begin\r
+ Application.CreateForm(TfrmOptions, frmOptions);\r
+ try\r
+ frmOptions.Caption := SysUtils.Format(_('Options for "%s"'), [Format]);\r
+ frmOptions.FIsInput := IsInput;\r
+ frmOptions.Opts := FOpts.FormatOpts(Format);\r
+ frmOptions.OptsStr := str;\r
+ Result := (frmOptions.ShowModal = mrOk);\r
+ if (Result) then\r
+ begin\r
+ str := frmOptions.OptsStr;\r
+ PostMessage(Self.Handle, WM_OPTIONS_CHANGED, 0, 0);\r
+ end;\r
+ finally\r
+ frmOptions.Release;\r
+ end;\r
+end;\r
+\r
+procedure TfrmMain.acOptionsTargetFormatExecute(Sender: TObject);\r
+begin\r
+ if chbOutputDevice.Checked then\r
+ HandleOptions(cbOutputFormatDevice.Text, edOutputOpts, False)\r
+ else\r
+ HandleOptions(cbOutputFormat.Text, edOutputOpts, False);\r
+end;\r
+\r
+procedure TfrmMain.btnInputOptsClick(Sender: TObject);\r
+begin\r
+ acOptionsSourceFormat.Execute;\r
+end;\r
+\r
+procedure TfrmMain.acFileClearMemoExecute(Sender: TObject);\r
+begin\r
+ memoOutput.Clear;\r
+end;\r
+\r
+procedure TfrmMain.acFinalizeDropDownsExecute(Sender: TObject);\r
+var\r
+ i, j: Integer;\r
+ c: TComponent;\r
+ cb: TComboBox;\r
+begin\r
+ for i := 0 to ComponentCount - 1 do\r
+ begin\r
+ c := Components[i];\r
+ if not(c is TComboBox) then Continue;\r
+ cb := Pointer(c);\r
+ if (cb.Style <> csDropDown) or (cb.Text = '') then Continue;\r
+ j := cb.Items.IndexOf(cb.Text);\r
+ if (j < 0) then\r
+ cb.Items.Insert(0, cb.Text);\r
+ end;\r
+end;\r
+\r
+procedure TfrmMain.WMOPTIONSCHANGED(var Msg: TMessage);\r
+begin\r
+ acFinalizeDropDowns.Execute;\r
+end;\r
+\r
+procedure TfrmMain.mnuOptionsForceDataTypeClick(Sender: TObject);\r
+begin\r
+ mnuOptionsForceDataType.Checked := not(mnuOptionsForceDataType.Checked);\r
+end;\r
+\r
+procedure TfrmMain.acOptionsEnableCharactersetTransformationExecute(\r
+ Sender: TObject);\r
+begin\r
+ acOptionsEnableCharactersetTransformation.Checked := not (\r
+ acOptionsEnableCharactersetTransformation.Checked);\r
+\r
+ cbInputLang.Enabled := acOptionsEnableCharactersetTransformation.Checked;\r
+ cbOutputLang.Enabled := acOptionsEnableCharactersetTransformation.Checked;\r
+end;\r
+\r
+procedure TfrmMain.acFileOutputToScreenExecute(Sender: TObject);\r
+begin\r
+ if (chbOutputDevice.Checked) then\r
+ begin\r
+ chbOutputDevice.Checked := False;\r
+ chbOutputDeviceClick(chbOutputDevice);\r
+ Application.ProcessMessages;\r
+ end;\r
+\r
+ acFileOutputToScreen.Checked := not (acFileOutputToScreen.Checked);\r
+ if acFileOutputToScreen.Checked then\r
+ begin\r
+ chbOutputDevice.Enabled := False;\r
+ HistoryChanged(edOutputFile);\r
+ edOutputFile.Text := '-';\r
+ edOutputFile.Enabled := False;\r
+ sbSaveFile.Enabled := False;\r
+ end\r
+ else\r
+ begin\r
+ chbOutputDevice.Enabled := True;\r
+ edOutputFile.Enabled := True;\r
+ HistoryChanged(edOutputFile, True);\r
+ sbSaveFile.Enabled := True;\r
+ end;\r
+ CheckInput;\r
+end;\r
+\r
+procedure TfrmMain.HistoryChanged(Box: TComboBox; Swap: Boolean);\r
+var\r
+ index: Integer;\r
+ item: string;\r
+begin\r
+ item := Trim(Box.Text);\r
+ if (item <> '') then\r
+ begin\r
+ index := Box.Items.IndexOf(item);\r
+ if (index < 0) then\r
+ Box.Items.Insert(0, item)\r
+ else\r
+ Box.Items.Move(index, 0);\r
+ end;\r
+ if (swap and (Box.Items.Count > 1)) then\r
+ Box.ItemIndex := 1;\r
+end;\r
+\r
+procedure TfrmMain.acDebugCreatePoExecute(Sender: TObject);\r
+var\r
+ l: TStringList;\r
+ i, j, len: Integer;\r
+ s: string;\r
+ f: TFileStream;\r
+begin\r
+ l := TStringList.Create;\r
+ try\r
+ FOpts.DebugGetHints(l);\r
+ f := TFileStream.Create('options\options.inc', fmCreate);\r
+ try\r
+ s := '{gnugetext: scan-all text-domain=''options''}'#13#10#13#10;\r
+ f.Write(PChar(s)^, Length(s));\r
+ s := 'const'#13#10;\r
+ f.Write(PChar(s)^, Length(s));\r
+\r
+ for i := 0 to l.Count - 1 do\r
+ begin\r
+ s := l.Strings[i];\r
+ len := Length(s);\r
+ for j := len downto 1 do\r
+ begin\r
+ if (s[j] = '''') then\r
+ begin\r
+ Insert('''', s, j);\r
+ end;\r
+ end;\r
+ s := Format('resourcestring option_%d=''%s'';'#13#10, [i, s]);\r
+ f.Write(PChar(s)^, Length(s));\r
+ end;\r
+\r
+ s := #13#10'{gnugettext: reset }'#13#10;\r
+ f.Write(PChar(s)^, Length(s));\r
+ finally\r
+ f.Free;\r
+ end;\r
+ finally\r
+ l.Free;\r
+ end;\r
+end;\r
+\r
+procedure TfrmMain.acFileChangeLanguageExecute(Sender: TObject);\r
+var\r
+ i: Integer;\r
+ s: string;\r
+begin\r
+ for i := 0 to FLang.Count - 1 do\r
+ begin\r
+ s := FLang.Strings[i];\r
+ if (s = '') then\r
+ Halt(1);\r
+ end;\r
+end;\r
+\r
end.\r
-
\ No newline at end of file
interface\r
\r
uses\r
+ gnugettextDx,\r
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
ExtCtrls, StdCtrls, Buttons;\r
\r
type\r
TfrmReadme = class(TForm)\r
Memo: TMemo;\r
- Panel1: TPanel;\r
- BitBtn1: TBitBtn;\r
+ pnBottom: TPanel;\r
+ btnOK: TBitBtn;\r
procedure FormDestroy(Sender: TObject);\r
procedure FormCreate(Sender: TObject);\r
+ procedure FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
private\r
{ Private declarations }\r
FStr: TStream;\r
\r
procedure TfrmReadme.FormCreate(Sender: TObject);\r
begin\r
+ btnOK.Left := pnBottom.Width - btnOK.Width - 8;\r
try\r
FStr := TFileStream.Create('README', fmOpenRead);\r
Memo.Lines.LoadFromStream(FStr);\r
end;\r
end;\r
\r
+procedure TfrmReadme.FormKeyDown(Sender: TObject; var Key: Word;\r
+ Shift: TShiftState);\r
+begin\r
+ if (Key = 27) then\r
+ ModalResult := mrOK;\r
+end;\r
+\r
end.\r
interface\r
\r
uses\r
- gnugettextD4,\r
- Windows, SysUtils, Classes, Registry;\r
+ gnugettext,\r
+ Windows, SysUtils, Classes, Registry, ShellAPI;\r
\r
type\r
PBoolean = ^Boolean;\r
\r
function gpsbabel(const CommandLine: string; Output: TStrings;\r
- Fatal: PBoolean = nil): Boolean;\r
+ Fatal: PBoolean = nil; OEMStrings: Boolean = True): Boolean;\r
\r
function GetShortName(const PathName: string): string;\r
procedure StoreProfile(const Tag: Integer; const Value: string);\r
-function ReadProfile(const Tag: Integer): string;\r
+function ReadProfile(const Tag: Integer; const Default: string = ''): string; overload;\r
+function ReadProfile(const Name: string; const Default: string = ''): string; overload;\r
\r
function BackupProperties(Instance: TObject; Properties: TStrings; Backup: TStringList): Boolean;\r
procedure RestoreProperties(Instance: TObject; Backup: TStringList);\r
\r
procedure FixStaticText(AComponent: TComponent);\r
\r
+procedure WinOpenFile(const Name: string);\r
+\r
implementation\r
\r
uses\r
end;\r
\r
function gpsbabel(const CommandLine: string; Output: TStrings;\r
- Fatal: PBoolean = nil): Boolean;\r
+ Fatal: PBoolean; OEMStrings: Boolean): Boolean;\r
+\r
+// bigger buffer_size speeds up conversion to screen\r
+\r
+const\r
+ BUFFER_SIZE = $20000;\r
+\r
var\r
hRead, hWrite: THandle;\r
ProcessInfo: TProcessInformation;\r
sCmd: string;\r
\r
BytesRead, BytesDone: DWORD;\r
- buffer: packed array[0..512] of Char;\r
+ buffer_string: string;\r
+ buffer: PChar;\r
Error: DWORD;\r
Wait_Result: DWORD;\r
s: string;\r
\r
begin\r
Result := False;\r
+\r
+ // strings are released automatical\r
+ // so we don't need a try/finally construct for our read buffer\r
+\r
+ SetLength(buffer_string, BUFFER_SIZE);\r
+ buffer := PChar(buffer_string);\r
+\r
if (Fatal <> nil) then Fatal^ := False;\r
\r
- sCmd := SysUtils.Format('%s %s ', [gpsbabel_exe, CommandLine]);\r
+ if (Copy(CommandLine, 1, 1) = '~') then\r
+ sCmd := System.Copy(CommandLine, 2, Length(CommandLine) - 1)\r
+ else\r
+ sCmd := SysUtils.Format('%s %s ', [gpsbabel_exe, CommandLine]);\r
\r
- SecurityAttr.nLength := sizeof (TSECURITYATTRIBUTES);\r
+ SecurityAttr.nLength := sizeof(TSECURITYATTRIBUTES);\r
SecurityAttr.bInheritHandle := true;\r
SecurityAttr.lpSecurityDescriptor := nil;\r
\r
- if not CreatePipe(hRead, hWrite, @SecurityAttr, 0) then\r
+ if not CreatePipe(hRead, hWrite, @SecurityAttr, $8000) then\r
raise eGPSBabelError.Create(_('Error WINAPI: Could not create "NamedPipe"!'));\r
\r
try\r
s := '';\r
\r
repeat\r
- Wait_Result := WaitforSingleObject(ProcessInfo.hProcess, 50);\r
+ Wait_Result := WaitforSingleObject(ProcessInfo.hProcess, 10);\r
if PeekNamedPipe(hRead, nil, 0, nil, @BytesRead, nil) then\r
begin\r
- Application.ProcessMessages;\r
+ if (BytesRead > 0) then Application.ProcessMessages;\r
while (BytesRead > 0) do\r
begin\r
- ReadFile(hRead, Buffer, SizeOf(buffer)-1, BytesDone, nil);\r
- buffer[BytesDone] := #0;\r
- s := s + string(buffer);\r
- Dec(BytesRead, BytesDone);\r
+ ReadFile(hRead, buffer^, BUFFER_SIZE - 1, BytesDone, nil);\r
+ if (BytesDone > 0) then\r
+ begin\r
+ buffer[BytesDone] := #0;\r
+ if OEMStrings then\r
+ OemToCharBuff(buffer, buffer, BytesDone);\r
+ s := s + string(buffer);\r
+ Dec(BytesRead, BytesDone);\r
+ end;\r
end;\r
end;\r
until (Wait_Result = WAIT_OBJECT_0);\r
end;\r
end;\r
\r
-function ReadProfile(const Tag: Integer): string;\r
+function ReadProfile(const Tag: Integer; const Default: string): string; // overload;\r
var\r
- reg: TRegistry;\r
str: string;\r
begin\r
if (Tag <= 0) or (Tag > High(Profile)) then Exit;\r
-\r
str := Profile[Tag];\r
+ Result := ReadProfile(str, Default);\r
+end;\r
\r
+function ReadProfile(const Name: string; const Default: string = ''): string; // overload;\r
+var\r
+ reg: TRegistry;\r
+begin\r
reg := TRegistry.Create;\r
try\r
reg.RootKey := HKEY_CURRENT_USER;\r
if reg.OpenKey('\SOFTWARE\GPSBabel', True) then\r
begin\r
try\r
- Result := reg.ReadString(str);\r
+ Result := reg.ReadString(Name);\r
except\r
- Result := '';\r
+ Result := Default;\r
end;\r
end;\r
finally\r
end;\r
end;\r
\r
-\r
function BackupProperties(Instance: TObject; Properties: TStrings; Backup: TStringList): Boolean;\r
var\r
List: TStringList;\r
end;\r
end;\r
\r
+procedure WinOpenFile(const Name: string);\r
+begin\r
+ ShellExecute(0, 'open', PChar(Name), nil, '', 0);\r
+end;\r
+\r
end.\r